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
   写入文件:
 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
   
写入文件:
     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
  写入文件:
  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
  写入文件:
  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
 
写入文件:
  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.
注册表文件操作。  
    写入注册表:
  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 下编译通过
 
 
 
 
 
在Visual C++中使用fopen()函数来读写文件
添加记录:  类别: VC语言  发布日期: 01月01日


在Visual C++中使用fopen()函数来读写文件

刘志荣


很多使用过Turbo C的朋友喜欢用fopen()函数来读写文件,在Visual C++环境中您也可以使用fopen()来读写文件。而且您还可以使用Visual C++中的标准的打开文件对话框,这样可以使选取读写文件的路径更方便。具体的做法是这样的。
首先您需要使用到MFC基本类库,在您原有的Visual C++程序中加上一个由CFileDialog类派生的新类,例如是CMyFileDialog,然后用这个新类定义一个对象,例如是:myDlg,使用这个对象的DoModal()方法,就可以呼出打开文件的对话框。这样,您只要把被选中的路径名及文件名传送给fopen()函数就可以打开读写这个文件了。

CMyFileDialog myDlg(true);
定义一个对话框对象
myDlg.DoModal();
呼出打开文件对话框
CString fileName;
定义一个Cstring类型的字符串来存储文件的路径及文件名
fileName=myDlg.GetPathName();
得到文件的路径及文件名

由于fopen()函数中需要的文件名参数是字符型的,所以我们还需要把CString类型的文件名转换为字符类型的变量。

int i, length;
定义i作为循环变量,定义length作为文件路径及文件名的长度
Char* FileName;
定义char型的字符指针来存储文件名,给fopen()函数使用
length=fileName.GetLength();
把文件名的长度赋给length变量
FileName=new char[length];
给char型的指针变量FileName分配内存空间
for(i=0;i<length;i++)
把CString型变量fileName中的字符一个一个地赋给char型的指针变量FileName
*(FileName+i)=fileName.GetAt(i);

*(FileName+length)=NULL;
在FileName变量的最后加上一个结束标志

这样,您就要吧使用fopen(FileName,"w")来写文件,或者是用fopen(FileName,"r")来读文件了。FileName就是使用打开文件对话框得到的文件路径及文件名。
 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值