我有一些现有的 Java 代码使用 java.nio.file.Files.walkFileTree
和 FileVisitor
接口(interface),但现在我需要将它移植到纯 C。这个接口(interface)有 C 等价物吗?如果没有,我可以使用哪些原语来构建一个?
我看过 Unix ftw
和 nftw
函数,但它们似乎不会工作,因为回调函数没有参数提供用户变量(单个 void* 参数会很好)。我的代码需要是线程安全的。
最佳答案
我的一个项目已经有了这种文件遍历的需求。我还需要它在 Linux 和 Windows 上具有可移植性。
我没有找到开源实现,最后自己实现了。这终于不是太多的工作。
在 Linux 端,我使用 opendir()
和 readdir()
来迭代目录条目。
在 Windows 端,我使用 FindFirstFileA()
和 FindNextFileA()
来完成这项工作。
接下来,对于每个条目,我只需调用一个使用过的已定义回调。
两种实现都不会超过 100 行代码...所以我建议您自己动手做。
关于c - 将 Java NIO Files.walkFileTree 访问者移植到 C,维护线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14255900/