问题标签 [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.
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 网站上的代码有点损坏。
c++ - 如何将文件保存到可能的新目录中?
所以我有一些基础boost::filesystem::path Base
,如果一个文件夹不存在,我想创建一个文件夹,并从字符串创建一个二进制文件。目前我有这样的功能:
它需要从目录中存在。所以我想知道如何将我的函数更新为 boost.filesystem API 以达到所需的功能?
c++ - 如何检查目录中的新文件?
鉴于:
filesystem::path toDir("./");
ptime oldTime;
ptime now(second_clock::local_time());
如何确定在oldTime
和之间的时间段内创建了哪些文件now
?
此类“新鲜”文件的名称应流式传输到cout
.
更新: 根据给定的答案,我做了一个小程序:
但它似乎没有显示任何新文件=(如何修复它?
更新 2:
解决了nowTime = second_clock::universal_time();
更新 3: 固定代码:
sync - boost::filesystem::create_directories() 创建的目录不能立即访问?
我boost::filesystem::create_directories()
用来创建新目录。当我在创建后不久尝试访问这些目录时,我收到一条错误消息:没有这样的目录。但是如果我在创建目录后睡一会儿一切都很好(我没有收到错误)。另外,我尝试在创建目录后使用fsync()
and sync()
,但没有任何区别。我在 ext4 和 xfs 文件系统上测试它,我的 boost 版本是 boost 1.44
我的问题是
- 是否
boost::create_directories()
立即创建目录?或者那里可能有问题? - 此外,是否
sync()
保证fsync()
将所有内容刷新到 ext4/xfs 上的光盘?
windows - 为什么 boost::filesystem is_directory 在作为 Windows 服务运行时返回不同的结果?
我有一些代码遍历目录中的文件并对非目录文件执行有用的操作,如下所示:
这在我的单元测试中运行良好,但是当我将完整的程序作为服务运行时,我的测试目录(看似错误地)通过了!bfs::is_directory
检查并且DoUsefulThings
'ifstream.good()
检查失败,errno 为 13。
我尝试更改!bfs::is_directory
为bfs::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() 的日志语句,它们都与我手动输入的相匹配。这是否排除了权限问题?将继续测试,因为这个结果对我来说还没有意义。
c++ - boost::filesystem::path::append (通过迭代器)导致编译器错误
我正在尝试使用boost::filesystem
如下方式生成新路径
我得到如下编译器错误
我的代码有什么问题以及如何修复它。提前致谢。
c++ - C++:Boost 文件系统 copy_file 出错
我在使用 copy_file 函数时遇到了一些麻烦。我的程序非常简单,我只是试图将文本文件从一个位置复制到另一个位置。
以下代码显示“调试错误!” 因为 abort() 被调用了。
如果我查看 Stackoverflow 上的其他一些代码示例,我不会注意到我做错了什么。我觉得我在这里遗漏了一些明显的东西。
我安装了 Boost v1.47 并且我正在使用 Visual C++ 2010。
c++ - 使用 Boost.Filesystem 获取平台的路径分隔符
有没有办法使用Boost.Filesystem获取平台的路径分隔符?路径分隔符是指/
Unix 和\
Windows。
我已经知道我可以使用boost::filesystem::path::operator/
适当的分隔符将两条路径连接在一起。但我只想要/
or \
。
我也知道我可以使用#ifdef _WIN32
,但我更希望 Boost.Filesystem 告诉我适当的分隔符。
编辑:我想使用Boost.Filesystem API 的第 3 版,如 Boost 1.48 中使用的那样。
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)抛出错误
抛出的函数是“转换”。从调试器我看到两者
和
被正确执行
c++ - 使用 BOOST_FOREACH 遍历目录中的所有文件
您可以使用 boost::filesystem 和 BOOST_FOREACH 遍历目录中的所有文件吗?我试过
此代码编译、运行,但不会产生所需的结果。