2

我想创建一个将文件复制到某个位置的函数。我想知道在 64kb 块中阅读它会是有益的天气吗?还是我应该动态分配缓冲区?还是我应该只使用 system() 函数在命令行上执行此操作?

我的意思是这样的:

int copy_file(const char *source, const char *dest)
{
    FILE *fsource, *fdest;
    int readSize;
    unsigned char buffer[64*1024]; //64kb in size

    fsource = fopen(source, "rb");
    fdest = fopen(dest, "wb");
    if(!fsource)
        return 0;
    if(!fdest)
    {
        fclose(fsource);
        return 0;
    }

    while(1)
    {
        readSize = fread(buffer, 1, sizeof(buffer), fsource);
        if(!readSize)
            break;
        fwrite(buffer, 1, readSize, fdest);
    }

    fclose(fsource);
    fclose(fdest);
    return 1;
}
4

1 回答 1

3

最佳读取大小将非常依赖于平台。2 的幂绝对是个好主意,但如果不进行测试,很难说哪种尺寸最好。

如果你想看看 cp 是如何复制文件的,你可以看看最前沿的源代码

于 2012-06-30T06:59:45.020 回答