我想创建一个将文件复制到某个位置的函数。我想知道在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;
}
答案 0 :(得分:3)
最佳读取大小将取决于平台。功率为2绝对是一个好主意,但如果没有测试,很难说哪种尺寸最好。
如果您想了解cp如何复制文件,您可以看到bleeding edge source code