如何加载目录中的所有文件?

2024-04-02

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

编辑: 对于 Windows,我很高兴能得到一些真正的工作代码,尤其是 lua。我可以用 boost::filesystem for c++ 来做。


对于 Lua,你需要模块Lua文件系统 http://www.keplerproject.org/luafilesystem/.

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

然而,扩展 Lua 核心很容易,因为(几乎)任何具有文件系统的平台也支持 DLL 或共享库。 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 副本来自Windows 下的 Lua http://www.keplerproject.org/luafilesystem/,那么您已经安装了 lfs,并且上面的示例将开箱即用。

Edit:顺便说一句,Lua 解决方案也可能是一个合理的 C 或 C++ 解决方案。 Lua 核心并不大,提供了一种动态的、垃圾收集的语言,并且很容易与 C 进行交互,无论是作为托管应用程序还是作为扩展模块。要在 C 应用程序中使用 lfs,您需要链接 Lua DLL,初始化 Lua 状态,并获取该状态来执行require"lfs"要么通过luaL_dostring()或使用 C API 检索require()从全局表中的函数,推送字符串"lfs",并使用类似的方式调用 Lua 函数lua_pcall(L,1,1,0),这使得lfs表位于 Lua 堆栈的顶部。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何加载目录中的所有文件? 的相关文章

  • 如何在联系我们页面中使用用户电子邮件发送电子邮件?

    我正在创建一个联系我们页面 并且我想从该页面接收邮件 因为它的邮件来自用户邮件 我写了这段代码 var client new SmtpClient smtp gmail com 587 Credentials new NetworkCred
  • 自定义可视化 Web 部件属性 sharepoint

    我在 Visual Studio 2012 中创建可视 Web 部件属性时遇到问题 我被提及http msdn microsoft com en us library ee231551 aspx http msdn microsoft co
  • 将数据集导出到 EXCEL

    我使用以下代码将数据库表中的字段导出到 Excel 中 我想要做的是能够编写一条 SQL 语句从多个表中检索字段并将其导出到 Excel 中 这段代码只允许我导出一张表 另外 如何显示保存提示对话框 示例代码将不胜感激 非常感谢 prote
  • 线程安全的get(访问器方法)

    我目前正在使用以下代码对变量进行线程安全访问 int gnVariable void getVariableValue int pnValue acquireLock Acquires the protection mechanism pn
  • 如何以编程方式确定 C 中 int 数据的最大和最小限制?

    我正在尝试 K R 的练习 2 1 练习内容如下 编写一个程序来确定范围char short int and long变量 两者signed and unsigned 通过从标准标题打印适当的值并通过直接计算 如果计算它们会更困难 确定各种
  • Reflection.Emit 中的短格式操作码错误

    我正在制作一种与以下非常相似的小语言hlsl但仅支持像素着色器 该语言使用reflection emit构建实现相同功能的 NET 程序集 我目前正在测试分支指令的实现if在我的一个单元测试中 一个大的if与内if elses 失败并显示以
  • 用 C++ 解密文件,该文件使用 openssl -aes-128-cbc 加密

    我正在尝试用 C 解密文件 该文件使用以下命令加密 openssl enc nosalt aes 128 cbc pass pass test in test txt out test enc txt p 控制台显示key 098F6BCD
  • WIX 自动生成 GUID *?

    假设我生成产品 ID 为 的 WIX XML 文件 另外 对于每个组件 GUID 我都使用
  • 尝试将元素推入向量

    在头文件 我没有编写 中 已经定义了一个结构体 如下所示 struct MemoryMessage public boost counted base public FastAlloc explicit MemoryMessage Memo
  • popen2()在c中如何工作?

    我尝试使用管道 叉子和 dup 在我的程序中执行 md5sume 命令 我发现总和代码运行成功 但我无法理解某些代码行 这是我的代码 int infp outfp char buf 128 if popen2 md5sum infp out
  • 标准头文件中的 C 编译器错误 - 未定义的 C++ 定义

    我正在尝试编译 C 程序 但收到许多错误 这些错误是在标准 C 头文件 inttypes h stdio h stat h 等 中遇到的 错误的来源是以下未定义的常量 BEGIN DECLS END DECLS BEGIN NAMESPAC
  • 使用 cryptoapi CryptImportKey 导入公钥时出错

    我想将公钥 blob 导入到 CSP 但发生了错误 BYTE pbData 0xEB 0x2A 0x38 0x56 0x86 0x61 0x88 0x7F 0xA1 0x80 0xBD 0xDB 0x5C 0xAB 0xD5 0xF2 0x
  • 允许 .NET WebApi 忽略 DOCTYPE 声明

    我正在尝试通过 WebApi 方法将 XML 反序列化为对象 我有以下课程 XmlRoot IsNullable false public class MyObject XmlElement Name public string Name
  • 无论表单上的焦点控件如何,如何捕获 Keys.F1?

    我使用了 KeyDown 事件和一些简单的代码 例如if e KeyCode Keys F1 捕获在表单上按下 F1 但如果表单上有一些文本框 或者表单上有一些带有 Dock Fill 的电子表格 则上面的代码将毫无用处并且不执行任何操作
  • 我可以在C中直接比较int和size_t吗?

    我可以比较一个int and a size t像这样的变量 int i 1 size t y 2 if i y Do something 或者我必须输入其中之一 只要满足以下条件 它就是安全的int为零或正数 如果它是负数 并且size t
  • Yield Return == IEnumerable 和 IEnumerator 吗?

    Is yield return实施的捷径IEnumerable and IEnumerator 是的 您可以在我的书 C in Depth 的第 6 章中找到更多相关信息 幸好第六章是免费提供 http www manning source
  • lambda 表达式是多线程的吗?

    lambda 表达式是多线程的吗 假设当你将数学公式编写为 lambda 方法时 当你将其传递给另一个方法时 它会是多线程的吗 不是100 清楚你问的是什么 您是否想问 lambda 是否自然地在不同的线程上运行 如果是这样 则它们只是 S
  • 为什么C#不支持多重继承? [复制]

    这个问题在这里已经有答案了 可能的重复 C 应该包含多重继承吗 https stackoverflow com questions 191691 should c include multiple inheritance 为什么C 不支持多
  • 组合框由于某种原因被链接

    我有以下代码来填充 3 个组合框 private void PopulateDDLs SqlConnection connection SqlCommand command SqlDataReader reader DataTable dt
  • C++20 范围太多 |运营商?

    我在这段代码中使用 g 10 2 有谁知道为什么我最后收到编译器错误std views reverse on results3 include

随机推荐

  • OpenGL 2 纹理内部格式 GL_RGB8I、GL_RGB32UI 等

    我正在重写大部分纹理代码 我希望能够指定某些内部格式 GL RGB8I GL RGB8UI GL RGB16I GL RGB16UI GL RGB32I 和 GL RGB32UI 这些标记在 OpenGL 2 中不存在 当将这些内部格式指定
  • 无法使用 pip 安装 Openvino

    我正在尝试安装 Openvino 将 Keras 模型转换为推理引擎的表示形式 我正在运行命令 python3 openvino tools mo mo tf py model 13 h5 input shape 180 180 这会返回错
  • 我如何知道 viewScope 变量是否已初始化

    在应用程序中 我需要知道 viewScope 变量是否已初始化 创建 viewScope 变量时 该值可能为 null 所以 viewScope isEmpty SomeName 并没有告诉我它已经被初始化并且答案为 null 或者它还没有
  • 标签周围的填充在 Internet Explorer 中不起作用

    我无法让 IE 填充 标签正常工作 这仅适用于 Firefox Safari Chrome 但不适用于 IE 请帮忙 我的简化 HTML 代码如下所示 div table tr td a style padding 20px backgro
  • 在 R 中,如何将两个 XML 文档合并为一个文档?

    我正在从基于 XML 的 API 查询数据 API 响应是分页的 因此我必须进行大量查询才能获取完整的数据集 Using read xml来自xml2包中 我可以轻松地发出每个请求并将其保存为 XML 文档 但我一直无法弄清楚如何使用该库将
  • 类型错误:(0,_schemaUtils.default)不是函数

    我有一个简单的 React 应用程序创建create react app在本地主机上运行良好 我现在正在尝试 Dockerify 该应用程序 这是我的 package json name yeet version 0 1 0 engines
  • SSIS 2008 中 ADO NET 源和 OLE DB 源之间的区别?

    谁能说出 SSIS 2008 中 ADO NET 源和 OLE DB 源之间的区别 它们在任何上下文中都相同吗 对于小型数据集 SSIS 2008 中的 ADO NET 源和 OLE DB 源之间几乎没有什么区别 它们之间的区别在于它们与其
  • 作为承诺的结果表示重新发送

    我不明白发生了什么事 Using q承诺 这有效 const deferred q defer deferred resolve Hellow const myPromise deferred promise router get item
  • OpenGL 统一缓冲区 std140 布局

    我正在尝试通过 GeForce 8600 GT 上的统一块将整数数组传递给片段着色器 一切均根据 GLSL version 330 在应用程序方面我有 int MyArray 7102 filling binding etc glBuffe
  • 为控制台应用程序制作 UI [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何为控制台应用程序制作一个界面 使它们看起来像edit com在微软的操作系统下 目标语言是 C C 和 C NET 看一下curs
  • 如何将序列中的下一个值放入变量中?

    因此 我正在编写一个存储过程 但无法将序列的下一个值放入变量中 序列名称被传递到函数中并存储为varchar2多变的 如何将该序列中的下一个值放入局部变量中 像这样的东西吗 create or replace procedure next
  • gulp 命令给出找不到模块的错误

    我正在尝试在 Windows 上设置基本的 aurelia 应用程序 我已遵循以下指示 http aurelia io get started html http aurelia io get started html 包括 安装节点js
  • 如何获取宿主元素引用?

    如何获取 Angular 2 中的宿主元素引用 就我而言 我想知道我的组件是否有焦点 您可以使用以下方式获取宿主元素引用 class MyComponent constructor private elRef ElementRef cons
  • 为什么我不应该有一个单一的整体实用程序库?

    我们有一些通用库 C 但我想这不是特定于平台或语言的 我们称它们为 A B 和 C 库 A 引用了 B 和 C 库 B 引用了第三方 DLL 库 C 是独立的 三个独立项目背后的想法是 每个库都有不同的功能 但随着时间的推移 库 A 或多或
  • mysql 使用另一个表中的值更新列

    我有两张桌子 看起来都像 id name value 1 Joe 22 2 Derk 30 我需要复制的值value from tableA to tableB基于每个表中的检查名称 对此有何建议UPDATE陈述 除了这个答案之外 如果您需
  • 连接表达式以获取数据帧的子集

    我正在尝试创建一个函数来计算子集数据框中列的平均值 这里的技巧是 我总是想要有几个子集条件 然后可以选择将更多条件传递给函数以进一步子集数据帧 假设我的数据如下所示 dat lt data frame var1 rep letters 26
  • Paster db init -c XXXX/development.ini 不适用于 CKAN 命令“db”不知道

    我是 CKAN 和 python 的第一次用户 我的大部分开发都是在 NET 我是第一次在 Windows 7 计算机上设置 CKAN 我正在尝试运行该行 paster db init c FOLDER NAME development i
  • PHP中如何获取最后修改的文件?

    我想创建一个列表 列出上次修改的文件的名称 http www searchr us web search 我想在我的主页上显示这些文件名 它们应该根据上次修改的文件进行更改 你可以使用这个功能 function listdir by dat
  • 调用未定义函数password_hash()

    我正在开发我的网站时 现在正在本地主机上运行 php 版本 5 4 16 我想用password hash 但我不断收到此错误 致命错误 调用未定义函数password hash dir to file php在线的123 为什么会发生这种
  • 如何加载目录中的所有文件?

    正如标题所说 如何加载目录中的每个文件 我对c 和lua都感兴趣 编辑 对于 Windows 我很高兴能得到一些真正的工作代码 尤其是 lua 我可以用 boost filesystem for c 来做 对于 Lua 你需要模块Lua文件