5

我正在尝试使用 C++ 在 linux 上移动文件。问题是,源文件和目标文件夹可以位于不同的分区中。所以我不能简单地移动文件。好的。我决定复制文件并删除旧文件。

//-----
bool copyFile(string source, string destination)
{
    bool retval = false;
    ifstream srcF (source.c_str(), fstream::binary);
    ofstream destF (destination.c_str(), fstream::trunc|fstream::binary);
    if(srcF.is_open() && destF.is_open()){
        destF << srcF.rdbuf(); //copy files binary stream
        retval = true;
    }
    srcF.close();
    destF.close();
    return retval;
}
//-----

现在我的问题。我意识到,这种方法很慢。100MB 需要 47 秒。只需使用控制台命令复制文件需要 2-3 秒。

有人有想法吗?

4

2 回答 2

3

众所周知,流非常慢。您可以使用操作系统提供的工具,也可以使用一些便携式包装器。

我会推荐boost::filesystem,因为它计划被添加到 STL(C++14 ?)。

此处的文档:boost::filesystem::copy_file()

于 2013-10-24T12:46:25.933 回答
-1

使用 Linux - 重命名(旧名称,新名称);

于 2015-01-28T23:39:37.363 回答