Windows编程中各种操作文件的方法
在CSDN看到一篇关于总结Windows编程中的各中文件操作方法。作者只是列了一个大纲,本人那将篇文章补充一下,贴出来希望能给有这方面需要的朋友帮助。文中有什么不当之处,还请指出![本人邮箱:vcfans (AT) gmail.com,本人小站:www.vcfans.com]
windows编程中文件操作有以下几种常见方法:
1.C语言中文件操作。
2.C++语言中的文件操作。
3.Win32 API函数文件操作。
4.MFC CFile类文件操作。
5.MFC CFileDialog类的文件操作。
6.注册表文件操作。
下面我来详细说明一下各种文件操作方法:
1. C语言中文件操作.需要包含的头文件STDIO.H
C++代码
1 2 3 4 5 6 7 8 9 10 11 12 13 | //写入文件: FILE *pfile=fopen("C.txt","w");//以写的方式打开C.txt文件。 fwrite("Welcome to VCFans!",1,strlen("Welcome to VCFans!"),pfile); //将数据写入文件。 fflush(pfile);//刷新缓冲区。将缓冲区数据写入文件 fclose(pfile);//关闭文件 //读取文件: FILE *pfile=fopen("C.txt","r");//以读的方式打开C.txt文件。 char FileContent[100]; memset(FileContent,0,100);//初始化FileContent fread(FileContent,1,100,pfile);//将刚才C.txt文件中的内容读入到FileContent MessageBox(FileContent);//输出结果 fclose(pfile);//关闭文件 |
2.C++语言中的文件操作。需要包含的头文件fstream.h
C++代码
1 2 3 4 5 6 7 8 9 10 11 | 写入文件: ofstream ofs(“C++.txt”);//建立ofstream对像。 ofs.write(“Welcome to VCFans!”,strlen(“Welcome to VCFans!”));//将数据写入文件 ofs.close();//关闭ofstream对象。 读取文件: ifstream ifs(“C++.txt”); char FileContent[100]; memset(FileContent,0,100);//初始化FileContent ifs.read(FileContent,100);//读取数据 ifs.close();//关闭ifstream对像 MessageBox(FileContent);//输出结果 |
3.Win32 API函数文件操作。需要包含的头文件winbase.h,需要类库:kernel32.lib
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 写入文件: HANDLE hFile;//定义一个句柄。 hFile=CreateFile(“API.txt”, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);//使用CreatFile这个API函数打开文件 DWORD Written; WriteFile(hFile,“Welcome to VCFans!”,strlen(“Welcome to VCFans!”),&Written,NULL);//写入文件 CloseHandle(hFile);//关闭句柄 读取文件: HANDLE hFile;//定义一个句柄。 hFile=CreateFile(“API.txt”, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);//使用CreatFile这个API函数打开文件 DWORD dwDataLen; char FileContent[100]; ReadFile(hFile,FileContent,100,&dwDataLen,NULL);//读取数据 FileContent[dwDataLen]=0;//将数组未尾设零。 CloseHandle(hFile);//关闭句柄 MessageBox(FileContent);//输出结果 |
4.MFC CFile类文件操作。需要包含的头文件afx.h
1 2 3 4 5 6 7 8 9 10 11 | 写入文件: CFile file("CFile.txt",CFile::modeCreate| CFile::modeWrite);//构造CFile对象 file.Write("Welcome to VCFans !",strlen("Welcome to VCFans !"));//写入数据到文件 file.Close();//关闭CFile对象。 读取文件: CFile file("CFile.txt",CFile::modeRead);//构造CFile对象 char FileContent[100]; memset(FileContent,0,100);//初始化FileContent file.Read(FileContent,100);//读入数据 file.Close();//关闭文件对象 MessageBox(FileContent);//输出数据 |
5.MFC CFileDialog类的文件操作。需要包含的头文件Afxdlgs.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 写入文件: CFileDialog fileDlg(FALSE,"txt","CFileDialog.txt");//建立CFileDialog对象 if(IDOK==fileDlg.DoModal()) { CFile file(fileDlg.GetFileName(),CFile::modeCreate| CFile::modeWrite);//构造CFile对象 file.Write("Welcome to VCFans !",strlen("Welcome to VCFans !"));//写入数据到文件 file.Close(); }; 读取文件: CFileDialog fileDlg(TRUE,"txt","CFileDialog.txt");//建立CFileDialog对象 if(IDOK==fileDlg.DoModal()) { CFile file(fileDlg.GetFileName(),CFile::modeRead);//构造CFile对象 char FileContent[100]; memset(FileContent,0,100);//初始化FileContent file.Read(FileContent,100);//读入数据 file.Close();//关闭文件对象 MessageBox(FileContent); }; |
6.注册表文件操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 写入注册表: HKEY hKey; DWORD dwSex=1; RegCreateKey(HKEY_LOCAL_MACHINE,"Software\\vcfans\\reg",&hKey);//打开注册表键 RegSetValueEx(hKey,"sex",0,REG_DWORD,(CONST BYTE*)&dwSex,4);//写入注册表数据 RegCloseKey(hKey);//关闭注册表键 读注册表: HKEY hKey; RegOpenKey(HKEY_LOCAL_MACHINE,"Software\\vcfans\\reg",&hKey);//打开注册表键 DWORD dwType; DWORD dwValue; DWORD dwSex; RegQueryValueEx(hKey,"sex",0,&dwType,(LPBYTE)&dwSex,&dwValue);//查询注册表数据 RegCloseKey(hKey);//关闭注册表键 CString str; str.Format("sex=%d",dwSex); MessageBox(str); |
//以上代码在VC6.0,Windows 2K server下编译通过。