C 读取64kb块中的文件
我想创建一个函数,将文件复制到某个位置。我想知道在64kb的块中阅读它是否有益?还是应该动态分配缓冲区?或者我应该在命令行上使用system()函数来完成它 我的意思是:C 读取64kb块中的文件,c,file,io,C,File,Io,我想创建一个函数,将文件复制到某个位置。我想知道在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 =
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;
}
最佳读取大小将非常依赖于平台。2的幂绝对是个好主意,但如果不进行测试,就很难说哪种尺寸最好
如果您想查看cp如何复制文件,可以直观地看到,而不是命令行中的system()。它将占用发送该命令、操作以及返回原始程序的开销。请将错误检查添加到
fwrite
和fclose
(至少是输出文件中的一个),否则您将得到失败的副本,这是非常糟糕的。