问题标签 [boost-filesystem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2036 浏览

c++ - boost::copy_file copy_option 跳过现有的目标文件?

我想将一个文件复制到另一个文件,并且我想使用 Boost::copy_file。它有一个名为 copy_option 的参数,可以是:

我在overwrite_if_exists这里发现了关于行为的另一个问题:how to perform boost::filesystem copy_file with overwrite

然而,我的问题是我不知道如何使用该fail_if_exists = none选项。如果目标文件已经存在,我想跳过复制操作。

我知道它是可能的,if ( !exists(path) )但我想了解它是如何copy_option工作的。

如何fail_if_exists = none在 Boost::copy_file 函数中使用?

更新:更正了代码,boost doc 网站上的代码有点损坏。

0 投票
2 回答
5001 浏览

c++ - 如何将文件保存到可能的新目录中?

所以我有一些基础boost::filesystem::path Base,如果一个文件夹不存在,我想创建一个文件夹,并从字符串创建一个二进制文件。目前我有这样的功能:

它需要从目录中存在。所以我想知道如何将我的函数更新为 boost.filesystem API 以达到所需的功能?

0 投票
1 回答
6453 浏览

c++ - 如何检查目录中的新文件?

鉴于:

  • filesystem::path toDir("./");
  • ptime oldTime;
  • ptime now(second_clock::local_time());

如何确定在oldTime和之间的时间段内创建了哪些文件now

此类“新鲜”文件的名称应流式传输到cout.

更新: 根据给定的答案,我做了一个小程序:

但它似乎没有显示任何新文件=(如何修复它?

更新 2:

解决了nowTime = second_clock::universal_time();

更新 3: 固定代码:

0 投票
0 回答
1148 浏览

sync - boost::filesystem::create_directories() 创建的目录不能立即访问?

boost::filesystem::create_directories()用来创建新目录。当我在创建后不久尝试访问这些目录时,我收到一条错误消息:没有这样的目录。但是如果我在创建目录后睡一会儿一切都很好(我没有收到错误)。另外,我尝试在创建目录后使用fsync()and sync(),但没有任何区别。我在 ext4 和 xfs 文件系统上测试它,我的 boost 版本是 boost 1.44

我的问题是

  1. 是否boost::create_directories()立即创建目录?或者那里可能有问题?
  2. 此外,是否sync()保证fsync()将所有内容刷新到 ext4/xfs 上的光盘?
0 投票
2 回答
1473 浏览

windows - 为什么 boost::filesystem is_directory 在作为 Windows 服务运行时返回不同的结果?

我有一些代码遍历目录中的文件并对非目录文件执行有用的操作,如下所示:

这在我的单元测试中运行良好,但是当我将完整的程序作为服务运行时,我的测试目录(看似错误地)通过了!bfs::is_directory检查并且DoUsefulThings'ifstream.good()检查失败,errno 为 13。

我尝试更改!bfs::is_directorybfs::is_regular_file(认为可能存在系统条件导致它成为其他东西),但我得到了相同的结果。该is_regular_file条件在我的单元测试中的目录上失败,但在作为服务运行时通过。

我还在 if 语句周围添加了一个 try/catch 以查看它是否抛出异常并验证它不是(可能无论如何都可以使用一个,但对此没有帮助)。

我认为问题可能与服务的权限级别有关,因此我更改了服务的属性以使用我用于登录该系统的相同帐户登录。结果相同。我也尝试过一些 PerformanceMonitor 以尝试在那里找到一些线索,但我还没有从中收集到太多信息。

有人可以建议为什么会发生这种情况吗?Errno=13 == “权限被拒绝”,对吧?在调用 is_directory 之前我需要执行额外的检查吗?

我使用的是 Windows XP、Visual Studio 2008/C++、Boost 库 1.44 版和文件系统 3 版。

ETA:我添加了以下内容来手动测试目录(斜线标记的方向没有影响),并且 is_regular_file 的行为符合预期:

我有打印出 *iterDir 和 iterDir->path() 的日志语句,它们都与我手动输入的相匹配。这是否排除了权限问题?将继续测试,因为这个结果对我来说还没有意义。

0 投票
1 回答
1304 浏览

c++ - boost::filesystem::path::append (通过迭代器)导致编译器错误

我正在尝试使用boost::filesystem如下方式生成新路径

我得到如下编译器错误

我的代码有什么问题以及如何修复它。提前致谢。

0 投票
2 回答
11332 浏览

c++ - C++:Boost 文件系统 copy_file 出错

我在使用 copy_file 函数时遇到了一些麻烦。我的程序非常简单,我只是试图将文本文件从一个位置复制到另一个位置。

以下代码显示“调试错误!” 因为 abort() 被调用了。

如果我查看 Stackoverflow 上的其他一些代码示例,我不会注意到我做错了什么。我觉得我在这里遗漏了一些明显的东西。

我安装了 Boost v1.47 并且我正在使用 Visual C++ 2010。

0 投票
3 回答
19583 浏览

c++ - 使用 Boost.Filesystem 获取平台的路径分隔符

有没有办法使用Boost.Filesystem获取平台的路径分隔符?路径分隔符是指/Unix 和\Windows。

我已经知道我可以使用boost::filesystem::path::operator/适当的分隔符将两条路径连接在一起。但我只想要/or \

我也知道我可以使用#ifdef _WIN32,但我更希望 Boost.Filesystem 告诉我适当的分隔符。

编辑:我想使用Boost.Filesystem API 的第 3 版,如 Boost 1.48 中使用的那样。

0 投票
2 回答
1849 浏览

c++ - boost filesystem::path 构造函数 std::length_error

我正在尝试使用 Boost.Filesystem 库遍历目录。

问题是当我尝试实例化一个路径对象时,我得到一个 std::length_error 消息“字符串太长”,其中包含任何长度的字符串,甚至例如“pippo”。

我已经尝试了所有这些:

我在 Windows 7 上使用 vc++10 的 boost 预编译版本 1.47。

提前谢谢你,卢卡

编辑

这是执行的升压代码(path.hpp 第 129 行)

并且从(path_traits.hpp line 174)抛出错误

抛出的函数是“转换”。从调试器我看到两者

被正确执行

0 投票
3 回答
16727 浏览

c++ - 使用 BOOST_FOREACH 遍历目录中的所有文件

您可以使用 boost::filesystem 和 BOOST_FOREACH 遍历目录中的所有文件吗?我试过

此代码编译、运行,但不会产生所需的结果。