CC++关于⽂件的读写操作以及⽂件的打开和保存
通过近来的学习,总结⼀下关于⽂件的读写操作以及⽂件的打开和保存的⽅法。
⼀、⽂件的读写操作:
(1)C语⾔对⽂件的读写操作
在C语⾔中,对⽂件的读写操作是⽤FILE结构体和常⽤的对⽂件操作的函数实现的,下⾯总结⼀下C语⾔中对⽂件操作的常⽤函数:fopen()  打开以⽂件名指定的⽂件
fwrite()  写⽂件
fread()  读⽂件
fseek()  移动⽂件的指针到新的位置通过该函数的参数设定的偏移量和初始位置
rewind()  移动⽂件的指针到⽂件流的开始位置,在通常情况下可⽤fseek()实现相同的功能,但⼆者有区别
ftell()  获得当前⽂件指针的位置,常⽤该函数获得⽂件的⽂件流的长度
fflush()  刷新缓冲区中的内容,当⽂件写⼊时直接将⽂件流的内容从缓冲区写⼊磁盘,当读取⽂件时直接将磁盘⽂件写⼊缓冲区,⽽不必等程序运⾏结束或关闭程序。
fclose()  关闭⽂件
memset()  在⼀段内存块中填充某个给定的值
⽰例代码如下:
/**********************************************************
*                C语⾔实现⽂件写操作                                *
***********************************************************/
FILE *pFile=fopen("","w");
fwrite("CLanguage",1,strlen("CLanguage"),pFile);
//fseek(pFile,0,SEEK_SET);
//fwrite("实现⽂件写操作",1,strlen("实现⽂件写操作"),pFile);
fclose(pFile);
/**********************************************************
*                C语⾔实现⽂件读操作                                *
***********************************************************/
FILE *pFile=fopen("","r");
//char ch[100];
//memset(ch,0,100);
//fread(ch,1,100,pFile);
//MessageBox(ch);
char* pBuf;
int length;
fseek(pFile,0,SEEK_END);
length=ftell(pFile);
pBuf=new char[length+1];
//fseek(pFile,0,SEEK_SET);
rewind(pFile);
fread(pBuf,1,length,pFile);
pBuf[length]=0;
MessageBox(pBuf);
fclose(pFile);
注意:在⽤C语⾔实现⽂件的读操作时,要注意⽂件的指针位置。⽽且还要注意⽂本⽂件和⼆进制⽂件的区别。
(2)C++实现对⽂件的读写操作
⽤C++语⾔实现⽂件的读写操作,要⽤到ofstream类和ifstream类,⽤该类的对象调⽤其成员函数Write()和Read()实现⽂件的读写。⽰例代码如下:
/**********************************************************
*                C++实现⽂件写操作                                *
***********************************************************/
ofstream ofs("C++");
ofs.write("C++Language",strlen("C++Language"));
ofs.close();
/**********************************************************
*                C++实现⽂件读操作                                *
***********************************************************/
ifstream ifs("C++");
char ch[100];
memset(ch,0,100);
MessageBox(ch);
ifs.close();
注意:⽤C++实现⽂件的读写操作时,由于⽤到了ofstream类和ifstream类,所以要包含该类的头⽂件:
#include <fstream>
using namespace std;
(3)Win32 API函数实现⽂件的读写操作
⽤Win32 API函数实现⽂件的读写操作常⽤的函数如下:
CreateFile()
WriteFile()
ReadFile()
CloseHandle()
⽰例代码如下:
/**********************************************************
*                Win32 API实现⽂件写操作                                *
***********************************************************/
HANDLE FileHandle;
FileHandle=CreateFile("",GENERIC_WRITE,0,NULL,CREATE_NEW,
FILE_ATTRIBUTE_NORMAL,NULL);
DWORD dwWrites;
WriteFile(FileHandle,"Win32 API Function",strlen("Win32 API Function"),
&dwWrites,NULL);
CloseHandle(FileHandle);
/**********************************************************
*                Win32 API实现⽂件读操作                                *
***********************************************************/
HANDLE FileHandle;
FileHandle=CreateFile("",GENERIC_READ,0,NULL,OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,NULL);
DWORD dwReads;
char ch[100];
ReadFile(FileHandle,ch,100,&dwReads,NULL);
ch[dwReads]=0;
MessageBox(ch);
CloseHandle(FileHandle);
(4)MFC实现⽂件的读写操作
⽤MFC实现⽂件的读写操作,要⽤到CFile类,该类的构造函数和成员函数会完成⼀系列的⽂件操作的相关⼯作。⽰例代码如下:
**********************************************************
*                MFC实现⽂件写操作                                *
***********************************************************/
CFile file("",CFile::modeCreate|CFile::modeWrite);
file.Write("Hello!阿波",strlen("Hello!阿波"));
file.Close();
/**********************************************************
*                MFC实现⽂件读操作                                *
***********************************************************/
CFile file("",CFile::modeRead);
DWORD filelenth;
filelenth=file.GetLength();
char* pBuf=new char[filelenth+1];
pBuf[filelenth]=0;c语言写入txt文件
file.Read(pBuf,filelenth);
MessageBox(pBuf);
file.Close();
delete pBuf;
⼆、⽂件的打开和保存
⽂件的打开和保存会弹出⽂件打开和保存对话框,所以要⽤到CFileDialog类实现⽂件的打开和保存。在CFielDialog类的运⽤中,经常⽤到OPENFILENAME结构体,在该结构体中,有相关的变量可以设置⽂件打开和保存对话框的相关设置⼯作(如:对话框标题的设置、默认⽂件扩展名的添加、过滤器的设置等)。
⽰例代码如下:
/**********************************************************
*        ⽂件对话框操作——保存⽂件                      *
***********************************************************/
CFileDialog fileDlg(FALSE);
fileDlg.m_ofn.lpstrTitle="我的⽂件保存对话框";//对话框标题
fileDlg.m_ofn.lpstrFilter="TextFile(*.txt)\0*.txt\0AllFile(*.*)\0*.*\0\0";//过滤器的设置
fileDlg.m_ofn.lpstrDefExt="txt";//保存⽂件默认扩展名
if(IDOK==fileDlg.DoModal())
{
CFile file(fileDlg.GetFileName(),CFile::modeCreate | CFile::modeWrite);
file.Write("⽂件保存对话框",strlen("⽂件保存对话框"));
file.Close();
}
/**********************************************************
*        ⽂件对话框操作——打开⽂件                      *
***********************************************************/
CFileDialog fileDlg(TRUE);
fileDlg.m_ofn.lpstrTitle="我的⽂件打开对话框";
fileDlg.m_ofn.lpstrFilter="TextFile(*.txt)\0*.txt\0AllFile(*.*)\0*.*\0\0";
if(IDOK==fileDlg.DoModal())
{
CFile file(fileDlg.GetFileName(),CFile::modeRead);
DWORD fileLength;
fileLength=file.GetLength();
char* pBuf=new char[fileLength+1];
pBuf[fileLength]=0;
file.Read(pBuf,fileLength);
MessageBox(pBuf);
delete pBuf;
file.Close();
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。