windows C语言实现大文件的拷贝
时间: 2023-09-05 11:09:59 浏览: 96
Windows下使用C语言实现大文件的拷贝可以使用WinAPI中的文件操作函数。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <windows.h>
#define BUFFER_SIZE 1024 * 1024 // 缓冲区大小,这里设为1MB
int main(int argc, char* argv[])
{
if (argc != 3)
{
printf("Usage: %s source_file target_file\n", argv[0]);
return 1;
}
HANDLE hSrcFile = CreateFile(argv[1], GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hSrcFile == INVALID_HANDLE_VALUE)
{
printf("Failed to open source file.\n");
return 1;
}
HANDLE hDstFile = CreateFile(argv[2], GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hDstFile == INVALID_HANDLE_VALUE)
{
printf("Failed to create target file.\n");
CloseHandle(hSrcFile);
return 1;
}
DWORD dwBytesRead, dwBytesWritten;
char buffer[BUFFER_SIZE];
while (ReadFile(hSrcFile, buffer, BUFFER_SIZE, &dwBytesRead, NULL) && dwBytesRead > 0)
{
if (!WriteFile(hDstFile, buffer, dwBytesRead, &dwBytesWritten, NULL) || dwBytesWritten != dwBytesRead)
{
printf("Failed to write to target file.\n");
CloseHandle(hSrcFile);
CloseHandle(hDstFile);
return 1;
}
}
CloseHandle(hSrcFile);
CloseHandle(hDstFile);
printf("File copy completed.\n");
return 0;
}
```
该程序会从命令行参数中读取源文件名和目标文件名,并使用CreateFile函数打开源文件和创建目标文件。然后,使用ReadFile和WriteFile函数进行文件的读写操作,读取BUFFER_SIZE大小的数据并写入目标文件,直到读取完整个源文件。最后调用CloseHandle函数关闭文件句柄。注意在进行文件操作时需要进行错误检查,以确保文件操作的正确性。
阅读全文