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 に答える