c - 将 Java NIO Files.walkFileTree 访问者移植到 C,维护线程安全

标签 c filetree directory-walk

我有一些现有的 Java 代码使用 java.nio.file.Files.walkFileTreeFileVisitor 接口(interface),但现在我需要将它移植到纯 C。这个接口(interface)有 C 等价物吗?如果没有,我可以使用哪些原语来构建一个?

我看过 Unix ftwnftw 函数,但它们似乎不会工作,因为回调函数没有参数提供用户变量(单个 void* 参数会很好)。我的代码需要是线程安全的。

最佳答案

我的一个项目已经有了这种文件遍历的需求。我还需要它在 Linux 和 Windows 上具有可移植性。

我没有找到开源实现,最后自己实现了。这终于不是太多的工作。

在 Linux 端,我使用 opendir()readdir() 来迭代目录条目。
在 Windows 端,我使用 FindFirstFileA()FindNextFileA() 来完成这项工作。
接下来,对于每个条目,我只需调用一个使用过的已定义回调。

两种实现都不会超过 100 行代码...所以我建议您自己动手做。

关于c - 将 Java NIO Files.walkFileTree 访问者移植到 C,维护线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14255900/

相关文章:

testing - 在 groovy(Spock) 中测试文件结构

c - 在 c 中使用 ntfw 时跳过子目录

c - 使用 chdir() 而不是绝对路径进行目录遍历

c - 如何确定存储类型(SSD 驱动器或 HHD .mechanical 驱动器),使用 C 语言

c++ - 头文件没有给函数声明

file - 如何在 Gradle 自定义任务中初始化 FileTree 字段?

python - 遍历目录树的 Python 方法是什么?

java - 显示树中每片叶子的完整路径

c - C 中的归并排序和快速排序

C通过函数传递值会更改函数中的值