根据条件从txt文件中挑出一些文字并据此修改文件名字

根据条件从txt文件中挑出一些文字并据此修改文件名字
/* ******************************************************
*学习Windows API编程
* 代码0003
* 根据特定条件读写文件.c

********************************************************/
/* ************************************
* DWORD ReadFileContent(LPSTR szFilePath)
* 功能    获取文件大小
*        读取文件内容,根据条件判断是否写入文件
* 参数    LPSTR szFilePath
*        文件路径
**************************************/

/* ******************************************************
*  SaveDataToFile
* 功能    将数据存储到文件末尾
* 参数    LPSTR szFilePath    文件路径
*        LPVOID lpData        需存储的数据
*        DWORD dwDataSize    数据大小(字节)
********************************************************/

/* 头文件 */
#include <windows.h>
#include <stdio.h>

DWORD ReadFileContent(LPSTR szFilePath)
{
    //文件大小
    HANDLE hFileRead;
    //保存文件大小
    LARGE_INTEGER liFileSize;
    //成功读取的文件数据大小
    DWORD dwReadedSize;
    //累加计算已经读取数据的大小
    LONGLONG liTotalRead = 0;
    //文件数据缓存
    BYTE lpFileDataBuffer[2];
    DWORD dwFlag=0;

    //打开已经存在的文件,读取内容。    
    hFileRead = CreateFile(szFilePath,// 要打开的文件名
        GENERIC_READ,               // 以读方式打开
        FILE_SHARE_READ,           // 可共享读
        NULL,                      // 默认安全设置
        OPEN_EXISTING,             // 只打开已经存在的文件
        FILE_ATTRIBUTE_NORMAL,     // 常规文件属性
        NULL);                     // 无模板

    //打开文件是否成功。
    if(hFileRead==INVALID_HANDLE_VALUE)
    {
        printf("打开文件失败:%d",GetLastError());
    }

    if(!GetFileSizeEx(hFileRead,&liFileSize))
    {
        printf("获取文件大小失败:%d",GetLastError());
    }
    else
    {
        printf("文件大小为:%d\n",liFileSize.QuadPart);
    }

    //循环读取并打印文件内容
    while(TRUE)
    {
        DWORD i;

        if(!ReadFile(hFileRead,    //读文件的句柄
            lpFileDataBuffer,    //存储读取的文件内容
            2,                    //读的大小(字节)
            &dwReadedSize,        //实际读取的大小
            NULL))                //不使用Overlapped
        {
            printf("读文件错误:%d\n",GetLastError());
            break;
        }
        printf("读取了%d字节,文件内容是:",dwReadedSize);
        
        for(i=0; i<dwReadedSize; i++)
        {
            printf("0x%x ",lpFileDataBuffer);

        }
        if(lpFileDataBuffer[0]==strtoul("4b",NULL,16) &&
        lpFileDataBuffer[1]== strtoul("00",NULL,16))
        {
            printf("k");
            dwFlag=1;
        }
        if(lpFileDataBuffer[0]==strtoul("b",NULL,16) &&
        lpFileDataBuffer[1]== strtoul("30",NULL,16))
        {
            printf("》");
            dwFlag=0;
        }
        if(dwFlag==1)
        {
            printf("%d",dwFlag);
            SaveDataToFile(".\\6.txt",lpFileDataBuffer,2);
            //SaveDataToFile(".\\6.txt",lpFileDataBuffer[1],1);
        }
        printf("\n");
        liTotalRead += dwReadedSize;
        if(liTotalRead == liFileSize.QuadPart)
        {
            printf("读文件结束\n");
            break;
        }
    }
    CloseHandle(hFileRead);
    return 0;
}


DWORD SaveDataToFile(
                     LPSTR szFilePath,
                     LPVOID lpData,
                     DWORD dwDataSize)
{
    //文件句柄
    HANDLE hFileWrite;
    //成功写入的数据大小
    DWORD dwWritedDateSize;

    //打开已经存在的文件,读取内容。    
    hFileWrite = CreateFile(szFilePath,    // 要打开的文件名
        GENERIC_WRITE,            // 以写方式打开
        0,                        // 可共享读
        NULL,                    // 默认安全设置
        OPEN_ALWAYS,            // 打开已经存在的文件,没用则创建
        FILE_ATTRIBUTE_NORMAL,    // 常规文件属性
        NULL);                    // 无模板
    
    //判断是否打开成功
    if(hFileWrite==INVALID_HANDLE_VALUE)
    {
        printf("打开文件失败:%d\n",GetLastError());
        return 1;
    }

    //设置文件指针到文件尾
    SetFilePointer(hFileWrite,0,0,FILE_END);

    //将数据写入文件
    if(!WriteFile(hFileWrite,lpData,dwDataSize,&dwWritedDateSize,NULL))
    {
        printf("写文件失败:%d\n",GetLastError());
        return 1;
    }
    CloseHandle(hFileWrite);
    return 0;
}

/* ******************************************************
* int main(int argc, PCHAR argv[])
* 功能    调用ListFileInDrectory
*        遍历目录下的文件和子目录
* 参数    argv[1]为需遍历的路径,如果为空则获取
*        当前路径
********************************************************/
int main(int argc, PCHAR argv[])
{    
    CHAR szCurrentPath[MAX_PATH];
    GetCurrentDirectory(MAX_PATH,szCurrentPath);
    ReadFileContent(".\\1.txt");
    return 0;  
}

++


/* 头文件 */
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>

DWORD SaveDataToFile(
                     LPSTR szFilePath,
                     LPVOID lpData,
                     DWORD dwDataSize)
{
    //文件句柄
    HANDLE hFileWrite;
    //成功写入的数据大小
    DWORD dwWritedDateSize;

    //打开已经存在的文件,读取内容。    
    hFileWrite = CreateFile(szFilePath,    // 要打开的文件名
        GENERIC_WRITE,            // 以写方式打开
        0,                        // 可共享读
        NULL,                    // 默认安全设置
        OPEN_ALWAYS,            // 打开已经存在的文件,没用则创建
        FILE_ATTRIBUTE_NORMAL,    // 常规文件属性
        NULL);                    // 无模板
    
    //判断是否打开成功
    if(hFileWrite==INVALID_HANDLE_VALUE)
    {
        printf("打开文件失败:%d\n",GetLastError());
        return 1;
    }

    //设置文件指针到文件尾
    SetFilePointer(hFileWrite,0,0,FILE_END);

    //将数据写入文件
    if(!WriteFile(hFileWrite,lpData,dwDataSize,&dwWritedDateSize,NULL))
    {
        printf("写文件失败:%d\n",GetLastError());
        return 1;
    }
    CloseHandle(hFileWrite);
    return 0;
}
DWORD ReadFileContent(LPSTR szFilePath)
{
    //文件大小
    HANDLE hFileRead;
    //保存文件大小
    LARGE_INTEGER liFileSize;
    //成功读取的文件数据大小
    DWORD dwReadedSize;
    //累加计算已经读取数据的大小
    LONGLONG liTotalRead = 0;
    //文件数据缓存
    BYTE lpFileDataBuffer[2];
    LPWSTR szDrive;
    LPWSTR szString=L"\n";
    
    //ZeroMemory(szLogicalDriveStrings,BUFSIZE);
    
    //打经TR存在的文件,读取内容。    
    hFileRead = CreateFile(szFilePath,// 要打开的文件名
        GENERIC_READ,               // 以读方式打开
        FILE_SHARE_READ,           // 可共享读
        NULL,                      // 默认安全设置
        OPEN_EXISTING,             // 只打开已经存在的文件
        FILE_ATTRIBUTE_NORMAL,     // 常规文件属性
        NULL);                     // 无模板

    //打开文件是否成功。
    if(hFileRead==INVALID_HANDLE_VALUE)
    {
        printf("打开文件失败:%d",GetLastError());
    }

    if(!GetFileSizeEx(hFileRead,&liFileSize))
    {
        printf("获取文件大小失败:%d",GetLastError());
    }
    else
    {
        printf("文件大小为:%d\n",liFileSize.QuadPart);
    }

    //循环读取并打印文件内容
    while(TRUE)
    {
        

        if(!ReadFile(hFileRead,    //读文件的句柄
            lpFileDataBuffer,    //存储读取的文件内容
            2,                    //读的大小(字节)
            &dwReadedSize,        //实际读取的大小
            NULL))                //不使用Overlapped
        {
            printf("读文件错误:%d\n",GetLastError());
            break;
        }
        printf("读取了%d字节,文件内容是:",dwReadedSize);
        printf("\n");
        szDrive = (LPWSTR)lpFileDataBuffer;

           if (CompareStringW(0x0800,0,szDrive,1,szString,1) == 2)
            {
            printf("%x ",lpFileDataBuffer[0],lpFileDataBuffer[1]);
            printf("\n");
            SaveDataToFile(".\\6.txt",szDrive,2);            
            }


        liTotalRead += dwReadedSize;
        if(liTotalRead == liFileSize.QuadPart)
        {
            printf("读文件结束\n");
            break;
        }
    }
    CloseHandle(hFileRead);
    return 0;
}



    
int main(int argc, PCHAR argv[])
{    

    ReadFileContent(".\\1.txt");
    return 0;  
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值