文件的创建、删除和维护

此博客展示了一段C语言代码,其功能是打开源文件,将文件内容读取到缓冲区,把缓冲区内的内容转换为大写,再写入临时文件,最后将临时文件重命名保存。代码中涉及文件操作、缓冲区使用等信息技术相关内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

应用程序可以使用GetTempFileName()函数来获取临时文件的文件名,而GetTempPath()将返回创建临时文件的目录的路径。
    下面的例子将一个文件复制到另一个文件。目标文件将对源文件中的内容进行大写转换。
    应用程序使用CreateFile()打开文件Original.txt 。然后,应用程序使用GetTempFileName()函数来获取临时文件的文件名,再用CreateFile()来创建临时文件。应用程序从源文件中读取4k内容并存放入缓冲中,然后在缓冲中将内容改为大写,再将修改后的内容写到临时文件。当源文件所有内容都转换并写入临时文件后,应用程序将关闭这两个文件,然后用MoveFileEx()函数将临时文件改名为Allcaps.txt 。
#include <windows.h>
#include <stdio.h>

#define BUFSIZE 4096

int main()
{
    HANDLE hFile;
    HANDLE hTempFile;
    DWORD  dwBytesRead, dwBytesWritten, dwBufSize=BUFSIZE;
    char szTempName[MAX_PATH];
    char buffer[BUFSIZE];
    char lpPathBuffer[BUFSIZE];
 
    // 打开源文件
 
    hFile = CreateFile("original.txt",  // 文件名
        GENERIC_READ,                   // 读文件
        0,                              // 不共享
        NULL,                           // 默认安全属性
        OPEN_EXISTING,                 
        FILE_ATTRIBUTE_NORMAL,          
        NULL);                          //不使用临时文件
    if (hFile == INVALID_HANDLE_VALUE)
    {
        printf("Could not open file.");
        return 0;
    }
 
    // 获取临时文件路径

    GetTempPath(dwBufSize,  
         lpPathBuffer);     

    //创建临时文件
   
    GetTempFileName(lpPathBuffer, // 临时文件目录
        "NEW",                    // 临时文件文的前缀
        0,                        // 创建唯一的名字
        szTempName);              // 保存名字的缓冲

    hTempFile = CreateFile((LPTSTR) szTempName,  // 文件名
        GENERIC_READ | GENERIC_WRITE, // 用于读写操作
        0,                            // 不共享
        NULL,                         // 默认安全属性
        CREATE_ALWAYS,                // 可重写已有文件
        FILE_ATTRIBUTE_NORMAL,      
        NULL);                       

    if (hTempFile == INVALID_HANDLE_VALUE)
    {
        printf("Could not create temporary file.");
        return 0;
    }
 
    // 读取4k内容并存放入缓冲中
    // 在缓冲中将内容改为大写
    // 将修改后的内容写到临时文件
 
    do
    {
        if (ReadFile(hFile, buffer, 4096,
            &dwBytesRead, NULL))
        {
            CharUpperBuff(buffer, dwBytesRead);
 
            WriteFile(hTempFile, buffer, dwBytesRead,
                &dwBytesWritten, NULL);
        }
    } while (dwBytesRead == BUFSIZE);
 
    //关闭文件
 
    CloseHandle(hFile);
    CloseHandle(hTempFile);
 
    // 该文件名
 
    if (!MoveFileEx(szTempName, "allcaps.txt", MOVEFILE_REPLACE_EXISTING))
    {
        printf("Could not move temp file.");
        return 0;
    }
 return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值