美文网首页
4.7 创建打开读写文件

4.7 创建打开读写文件

作者: f675b1a02698 | 来源:发表于2017-09-14 16:16 被阅读0次

说明

我只能说Unicode很坑,所以我改成了ANSI编码.

效果

源码

#include

#include

//获取文件内容以16进制打印

DWORD ReadFileContent(LPSTR szFilePath){

HANDLE hFileRead;//文件句柄

LARGE_INTEGER liFileSize;//文件大小

DWORD dwReadSize;//读取的文件大小

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,//一次读取的大小 32字节

&dwReadSize,//实际读取的大小

NULL//不使用overlapped

)){

printf("读取文件错误: %d\n", GetLastError());

break;

}

printf("读取了 %d 字节,文件内容是:\n", dwReadSize);

for (i = 0; i< dwReadSize; i++){

printf("0x%x ", lpFileDataBuffer[i]);

}

printf("\n");

liTotalRead += dwReadSize;//累加读取的数据大小

if (liTotalRead == liFileSize.QuadPart){

//如果累加的大小等于文件总大小

printf("读取文件结束\n");

break;

}

}

CloseHandle(hFileRead);

return 0;

}

//添加数据到文件尾

DWORD SaveDataToFile(LPSTR szFilePath, LPVOID lpData, DWORD dwDataSize){

HANDLE hFileWrite;//文件句柄

DWORD dwWriteDateSize;//成功写入的数据大小

//打开已存在的文件

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, &dwWriteDateSize, NULL)){

printf("写文件失败: %d\n", GetLastError());

} else{

printf("写文件成功,写入 %d 字节数据\n", dwWriteDateSize);

}

CloseHandle(hFileWrite);

return 0;

}

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

LPTSTR szFileData = TEXT("御坂网络写文件测试");

SaveDataToFile(TEXT("写文件.txt"), szFileData, lstrlen(szFileData));

ReadFileContent(TEXT("写文件.txt"));

getchar();

return 0;

}

相关文章

  • 4.7 创建打开读写文件

    说明 我只能说Unicode很坑,所以我改成了ANSI编码. 效果 源码 #include #include //...

  • 1706

    文件操作 打开文件 使用open函数和create函数打开和创建文件 读写文件 1.打开文件函数 定位文件

  • Go标准库之读写文件(File)

    Go标准库之读写文件(File) 创建一个空文件 获取文件的信息 重命名和移动文件 删除文件 打开关闭文件 打开文...

  • Go标准库之读写文件(File)

    Go标准库之读写文件(File) 创建一个空文件 获取文件的信息 重命名和移动文件 删除文件 打开关闭文件 打开文...

  • (六) IOS学习之--NSFileHandle

    -NSFileHandle NSFileHandle主要用于操作文件的读写 1. 文件的创建 2. 文件的打开 读...

  • 第十六节:读文件,文件的创建,写文件,文件的读写以及鼠标键盘事件

    读文件 文件的创建 写文件 文件的读写 重点: 文件类主要功能:创建,读属性,写属性,删除等 文件读写操作 Fil...

  • C语言读写文件

    C语言文件读写### 标准文件读写 非标准文件读写 标准文件读写 头文件 include 打开文件 函数原型:FI...

  • Windows API的系统基本服务

    1.文件系统:包括文件的创建,打开,读写,关闭,删除.文件属性的设置与获取.目录操作及磁盘分卷,镜像文件,加密文件...

  • IO流

    1. 了解IO 2. 创建文件 3. 读写文件内容 RandomAccessFile类读写文件 ...

  • 第5次课-Shell脚本语言-第5讲

    内容一:Shell脚本->重定向学习 1、创建文件读写描述符?"<>" 2、关闭文件描述符 3、列举打开的文件描述...

网友评论

      本文标题:4.7 创建打开读写文件

      本文链接:https://www.haomeiwen.com/subject/hpgqsxtx.html