学习API之文件操作二(创建、打开、读取)

 

#include <windows.h>
#include <stdio.h>

 

/*
功能: 获取文件大小
读取文件内容,并以十六进制的形式打印
参数: LPSTR szFilePath
文件路径
*/

 

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

 

hFileRead = CreateFile(szFilePath, //要打开的文件名
GENERIC_READ, //要打开的方式
FILE_SHARE_READ, //是否共享
NULL, //默认安全设置
OPEN_EXISTING, //打开文件是否存在
FILE_ATTRIBUTE_NORMAL, //文件属性
NULL); //有无模板
if (hFileRead == INVALID_HANDLE_VALUE)
{
printf("文件打开失败:%d\n", GetLastError());
}
if (!GetFileSizeEx(hFileRead, &liFileSize))
{
printf("获取文件大小失败:%d\n", GetLastError());
}
else
{
printf("文件大小为:%d\n", liFileSize.QuadPart);
}
while (TRUE)
{
DWORD i;
if (!ReadFile(hFileRead, //文件句柄
lpFileDataBuffer, //存储读取的文件内容
32, //读的大小(字节)
&dwReadedSize, //实际读取的大小
NULL)) //不使用Overlapped
{
printf("读取文件错误:%d\n", GetLastError());
break;
}
printf("读取了%d字节,文件内容是:", dwReadedSize);
for (i = 0; i < dwReadedSize;i++)
{
printf("0x%x ", lpFileDataBuffer[i]);
}
printf("\n");
liTotalRead += dwReadedSize;
if (liTotalRead == liFileSize.QuadPart)
{
printf("读取文件结束\n");
break;
}
}
CloseHandle(hFileRead);
return 0;
}

 

/*
功能:将数据存储到文件末尾
参数:
LPSTR szFilePath 文件路径
LPVOID lpData 需存储的数据
DWORD dwDataSize 数据大小(字节)
*/
DWORD SavaDataToFile(LPSTR szFilePath,
LPVOID lpData,
DWORD dwDataSize)
{
HANDLE hFileWrite;
DWORD dwWritedDataSize;
hFileWrite = CreateFile(szFilePath,
GENERIC_WRITE,
0, NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);

 

if (hFileWrite == INVALID_HANDLE_VALUE)
{
printf("打开文件失败:%d\n", GetLastError());
}
//设置文件指针到文件尾
SetFilePointer(hFileWrite, 0, 0, FILE_END);
if (!WriteFile(hFileWrite,lpData,dwDataSize,&dwWritedDataSize,NULL))
{
printf("写文件失败:%d\n", GetLastError());
}
else
{
printf("写文件成功,写入%d字节。\n", dwWritedDataSize);
}
CloseHandle(hFileWrite);
return 0;
}

 

int main(int argc,PCHAR argv[])
{
SavaDataToFile("f:\\test.c",argv[1], lstrlen(argv[1]));
ReadFileContent("f:\\test.c");
return 0;
}

 

posted @ 2016-05-19 10:51  mousemin  阅读(211)  评论(0编辑  收藏  举报