当前位置:  开发笔记 > 编程语言 > 正文

如何从目录加载所有文件?

如何解决《如何从目录加载所有文件?》经验,为你挑选了1个好方法。

就像标题所说; 如何加载目录中的每个文件?我对c ++和lua感兴趣.

编辑:对于Windows我会很高兴一些真正的工作代码,尤其是对于lua.我可以使用boost :: filesystem for c ++.



1> RBerteig..:

对于Lua,您需要模块Lua Filesystem.

正如Nick所观察到的那样,访问文件系统本身(而不是单个文件)超出了C和C++标准的范围.由于Lua本身(用于实现C模块的require()的动态加载器除外)用标准C编写,因此核心语言缺少许多文件系统功能.

但是,由于(几乎)任何具有文件系统的平台也支持DLL或共享库,因此很容易扩展Lua核心.Lua文件系统是一个可移植的库,它增加了对目录迭代,文件属性发现等的支持.

使用lfs,在Lua中模拟DIR的一些功能基本上就像:

require "lfs"
dot = arg[1] or "."
for name in lfs.dir(dot) do
    local fqn = dot.."/"..name
    local attr = lfs.attributes(fqn)
    print(name, attr.mode, os.date("%Y-%m-%d %H:%M",attr.modification), attr.size)
end

这产生的输出看起来像:

E:...>t-lfs.lua
.       directory       2009-04-02 13:23        0
..      directory       2009-04-02 13:18        0
foo.txt file    2009-02-23 01:56        0
t-lfs.lua       file    2009-04-02 13:18        241

E:...>

如果您的Lua副本来自Lua for Windows,那么您已经安装了lfs,上面的示例将开箱即用.

编辑:顺便说一句,Lua解决方案也可能是一个合理的C或C++解决方案.Lua核心并不大,提供动态的垃圾收集语言,并且很容易与C作为托管应用程序或扩展模块进行交互.要使用LFS从C应用程序,你会用Lua的DLL链接,初始化一个Lua状态,并得到执行的状态require"lfs"或者通过luaL_dostring()或使用C API来检索require()从全局表功能,推弦"lfs",和用类似的东西调用Lua函数lua_pcall(L,1,1,0),这使得lfs表保留在Lua堆栈的顶部.

如果您已经需要嵌入式脚本语言,并且Lua满足您的要求,这种方法可能最有意义.

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有