【问题标题】:Why is there no boost::filesystem::move_file?为什么没有 boost::filesystem::move_file?
【发布时间】:2011-03-10 02:54:09
【问题描述】:

我正在使用 boost 文件系统来替换 Windows C++ 函数,如 CopyFile 和 MoveFile,以获得 Windows 和 linux 之间的某种可移植性。我正在使用 copy_file,但我找不到任何像“move_file”函数这样移动文件的东西。 boost有移动文件功能吗?

我非常喜欢使用 boost,但也欢迎其他建议。

【问题讨论】:

    标签: c++ file-io boost-filesystem


    【解决方案1】:

    它叫做rename,见the manual。与相应的操作系统功能一样,如果源路径和目标路径位于不同的文件系统上,这可能会或可能不会起作用。如果不起作用,请使用复制操作,然后执行删除操作。

    【讨论】:

    • 我承认阅读手册,然后依次阅读手册所引用的 ISO C 页面,我没有看到任何明确说明目标可以是另一个目录中的文件以便将文件从一个目录移动到另一个目录。仔细阅读意味着这是可能的,但我认为如果 boost 文档明确说明了这种可能性,它将更加有用和更加清晰。 Boost 文档票:svn.boost.org/trac/boost/ticket/9643
    • move(在 Linux 下作为 mv)适用于不同的文件系统,而 rename 则不能。
    【解决方案2】:
    void add_time(ptime& gen_time, int seconds) {
        boost::posix_time::millisec_posix_time_system_config::time_duration_type time_elapse(0, 0, seconds);
        //time_elapse = p2 - p1;
        gen_time = gen_time + time_elapse;
    }
    

    【讨论】:

    • 也许这是正确的答案,但对于其他问题。
    猜你喜欢
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    • 2016-06-02
    • 1970-01-01
    相关资源
    最近更新 更多