CreateFile、ReadFile、WriteFile和fread、fwrite两种读写文件的方法
来源:互联网 发布:电影《美国黑帮》知乎 编辑:程序博客网 时间:2024/06/02 00:20
相关函数的使用可以查看MSDN上的说明文档。本文只提供实例。
程序需包含:#include “Windows.h”文件
方法一、采用:CreateFile、ReadFile、WriteFile
DWORD dwFileSize = 0;BYTE* buffer = NULL;HANDLE hFile = INVALID_HANDLE_VALUE;hFile = CreateFile("D:\\12123.jpg",GENERIC_READ, FILE_SHARE_READ,NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL);if (hFile == INVALID_HANDLE_VALUE){CloseHandle(hFile);cout<<"Create File Failed !"<<endl;return 0;} else{dwFileSize = GetFileSize(hFile,NULL);//LARGE_INTEGER lFileSize;//GetFileSizeEx(hFile,&lFileSize);//若文件长度超过0xFFFFFFFF,使用GetFileSizeEx。cout<<"文件大小 "<<dwFileSize<<endl;buffer = new BYTE[dwFileSize];if (buffer == NULL){cout<<"Create buffer error !"<<endl; return 0;}ZeroMemory(buffer,dwFileSize);DWORD dwReadSize = 0,dwReadTotal = 0;while (dwReadTotal < dwFileSize){ReadFile(hFile,buffer + dwReadTotal,dwFileSize - dwReadSize,&dwReadSize,NULL);dwReadTotal += dwReadSize;}cout<<"总共读取的文件大小 "<<dwReadTotal<<endl;}hFile = CreateFile("D:\\222.jpg",GENERIC_WRITE,0,NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);if (hFile == INVALID_HANDLE_VALUE){CloseHandle(hFile);cout<<"Create File Failed -2 !"<<endl;delete []buffer;buffer = NULL;return 0;} else{DWORD dwWriteTotal = 0,dwWriteSize = 0;while (dwWriteTotal < dwFileSize){WriteFile(hFile,buffer + dwWriteTotal,dwFileSize,&dwWriteSize,NULL);dwWriteTotal += dwWriteSize;}}delete []buffer;buffer = NULL;
方法二、采用fread、fwrite
DWORD dwFileSize = 0;WIN32_FIND_DATA FileInfo;ZeroMemory(&FileInfo,sizeof(WIN32_FIND_DATA));HANDLE hFind = INVALID_HANDLE_VALUE;hFind = FindFirstFile("D:\\12123.jpg",&FileInfo); if(hFind != INVALID_HANDLE_VALUE) {dwFileSize = FileInfo.nFileSizeLow ;}FindClose(hFind);BYTE* buffer = new BYTE[dwFileSize];if (buffer == NULL){cout<<"Create buffer error !"<<endl;return 0;}ZeroMemory(buffer,dwFileSize);FILE *f = NULL;fopen_s(&f,"D:\\12123.jpg","rb");if (f == NULL){delete [] buffer;buffer = NULL;cout<<"fopen_s error -1 !"<<endl;return 0;} else{fread(buffer,dwFileSize,1,f);}fclose(f);f = NULL;fopen_s(&f,"D:\\333.jpg","wb");if (f == NULL){cout<<"fopen_s error -2 !"<<endl;return 0;}if (fwrite(buffer,dwFileSize,1,f) < 1){cout<<"fwrite error !"<<endl;}fclose(f);f = NULL;
阅读全文
0 0
- CreateFile、ReadFile、WriteFile和fread、fwrite两种读写文件的方法
- CreateFile ReadFile WriteFile读写文件操作
- win32 CreateFile readFile writefile 文件读写
- fstream与 C 风格(例如fread 和 fwrite )两种读写文件方法的效率比较
- fstream与 C 风格(例如fread 和 fwrite )两种读写文件方法的效率比较
- 使用CreateFile, ReadFile, WriteFile在Windows NT/2000/XP下读写绝对扇区的方法
- 使用CreateFile, ReadFile, WriteFile在Windows NT/2000/XP下读写绝对扇区的方法
- 使用CreateFile, ReadFile, WriteFile在Windows NT/2000/XP下读写绝对扇区的方法
- 使用CreateFile, ReadFile, WriteFile在Windows NT/2000/XP下读写绝对扇区的方法
- C/C++ 文件操作之CreateFile、ReadFile和WriteFile
- C/C++ 文件操作之CreateFile、ReadFile和WriteFile
- 读写文件函数ReadFile和WriteFile解析
- [Win32]ReadFile/WriteFile 的文件同步读写
- <Win32 API> 文件操作CreateFile/ReadFile/WriteFile
- CreateFile WriteFile ReadFile FlushFileBuffers的基本用法
- CreateFile ReadFile WriteFile 详解
- CreateFile ReadFile WriteFile 详解
- CreateFile、WriteFile、ReadFile
- C++学习之路 day7
- SQL 优化
- 网页的文件名
- 581. Shortest Unsorted Continuous Subarray
- [Leetcode]_40 Combination Sum II
- CreateFile、ReadFile、WriteFile和fread、fwrite两种读写文件的方法
- 移动前端开发的一些简单分类!
- 【C++心路历程37】钓鱼(刷表法dp)
- Redis-数据结构-字典
- Java-剑指offer-正方体的三面和相等
- 如何判断是输入流还是输出流
- IOS UIScrollView用法总结
- 把set作为vector的元素
- [Leetcode]69. Sqrt(x)解析@Python