Windows编程中文件操作有以下几种常见方法

来源:互联网 发布:校园网端口初始化失败 编辑:程序博客网 时间:2024/06/02 01:48

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下编译通过。

我要补充有两点:

1. CFileDialog   myDlg(TRUE,"*.EXE","MyFile",NULL,"扩展名(*.exe)  |   *.exe   |    |  ”,0)   
            myDlg.DoModal();   
        第一个参数设置为TRUE是打开文件对话框,FALSE是保存文件对话框。   
        第二个参数是默认的扩展名,你可以换成你自己的扩展名或设置   为NULL和   0   
        的三个参数是默认的文件名,你也可以。。。。。   
        第四个参数是打开的方式,具体情况你的查帮助或设置为NULL   
        第五个参数是可选的扩展名,注意字符串的末尾必须是   and     and     
        第六个是父窗口的指针,一般设置为NULL或   0 

2 .我在同一个程序中用CFile打开了两个文件,一个原文件,一个转变后的文件,在用第二个CFile时如果没有指定路径,则会默认为第一个的打开路径!(这个费了我很多时间才弄明白,十足的菜鸟,面壁啊!)

ECC编码部分:

出来每个字段编码都是一样的?!对不对还不知道!

补充学习:

系统里一般有两个版本的messagebox,一个是unicode版本的,MessagebBoxW(),一个是ascii版本的, MessageBoxA(),你在某些mfc类里可以直接调用MessaeBox()是因为该类已经封装了MessageBox()函数(比如 CView,CDialog等)  

MessageBox("ok!","ok!",MB_OK);   
AfxMessageBox("ok!");

原创粉丝点击