根据条件从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;
}
*学习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;
}