以下示例将一个文件复制到另一个文件。第二个文件是第一个文件的大写版本。
应用程序使用CreateFile打开ORIGINAL.TXT文件。然后应用程序获取具有GetTempFileName功能的临时文件名,并使用CreateFile创建临时文件。应用程序将4K块读入缓冲区,将缓冲区内容转换为大写,并将转换的缓冲区写入临时文件。当所有ORIGINAL.TXT都写入临时文件时,应用程序将关闭这两个文件,并使用MoveFile功能将临时文件重命名为ALLCAPS.TXT。
HANDLE hFile;
HANDLE hTempFile;
DWORD dwBytesRead, dwBytesWritten, dwPos;
char szTempName[MAX_PATH];
char buffer[4096];
//打开现有文件。
hFile = CreateFile("ORIGINAL.TXT", // 文件名
GENERIC_READ, //打开阅读
0, //不要分享
NULL, //没有安全
OPEN_EXISTING, //仅存在文件
FILE_ATTRIBUTE_NORMAL, //普通文件
NULL); //没有attr。模板
if (hFile == INVALID_HANDLE_VALUE) {
ErrorHandler("Could not open file."); //进程错误
}
//创建一个临时文件。
GetTempFileName("\\TEMP", //你。温度档
"NEW", // temp。文件名前缀
0, //创建唯一的名称
szTempName); //缓冲区名称
hTempFile = CreateFile((LPTSTR) szTempName, // 文件名
GENERIC_READ | GENERIC_WRITE, //打开读写
0, //不要分享
NULL, //没有安全
CREATE_ALWAYS, //覆盖现有文件
FILE_ATTRIBUTE_NORMAL, //普通文件
NULL); //没有attr。模板
if (hTempFile == INVALID_HANDLE_VALUE) {
ErrorHandler("Could not create temporary file.");
}
//读取4K块到缓冲区。
//将缓冲区中的所有字符更改为大写。
//将缓冲区写入临时文件。
do
{
if(ReadFile(hFile,buffer,4096,
& dwBytesRead,NULL)){
CharUpperBuff(buffer, dwBytesRead);
WriteFile(hTempFile,buffer,dwBytesRead,
&dwBytesWritten, NULL);
}
} while (dwBytesRead == 4096);
//关闭这两个文件。
CloseHandle(hFile);
CloseHandle(hTempFile);
//将临时文件移动到新的文本文件。
if(!MoveFile(szTempName,“ALLCAPS.TXT”)){
ErrorHandler("Could not move temp. file.");
}