2012-02-10 20:22:59|?次阅读|上传:wustguangh【已有?条评论】发表评论
关键词:C/C++, 文件操作|来源:唯设编程网
文件操作在VC编程中使用非常普遍,直接使用CFile对文件进行操作比较繁琐,使用继承自CFile的CStdioFile类就要容易得多,用CStdioFile 来处理字符串,是最简单最好理解的的办法。本文整理了网上大家使用的各种CStdioFile的操作方法,归纳如下:
1.打开文件:
file.Open(FileName, CFile::modeCreate|CFile::modeReadWrite|CFile::modeNoTruncate);
打开文件主要需要传入两个参数,FileName——文件名;文件打开模式。
几种比较常见的文件打开模式:
CFile::modeCreate 以新建方式打开,如果文件不存在,新建;如果文件已存在,把该文件长度置零,即清除文件原有内容。
CFile::modeNoTruncate 以追加方式打开,如果文件存在,打开并且不将文件长度置零,如果文件不存在,会抛出异常。一般与CFile::modeCreate 一起使用,则文件不存在时,新建一个文件;存在就进行追加操作。
CFile::modeWrite 以只写模式打开
CFile::modeRead 以只读模式打开
CFile::modeReadWrite 以读写模式打开
2.读文件:
virtual LPTSTR ReadString( LPTSTR lpsz, UINT nMax ) throw( CFileException );
BOOL ReadString(CString& rString) throw( CFileException );
CStdioFile的ReadString方法可以逐行从文件中读取内容,该例将文件逐行读出,写入到str字符串里。
如果需要读出文件所有内容,可以用下面的方法:
while(file.ReadString(str))
{
filestr=filestr+str+"
";
}
这里用”
”来为字符串加上换行。
3.写入文件
file.WriteString(str);
这里很值得注意一下,CStdioFile类没有提供逐行写入的方法,只有自己在文件内容行的末尾增加"
"或者"
"实现换行的功能,如果文件的打开模式设置了CFile::modeNoTruncate,那么字符串将以追加的形式写入,并且是从文件指针现在所处位置写起。
比如:
CString FileName("test.txt"),str(""); CStdioFile file; // 创建文件“test.txt”,写入"1234567890" file.Open(FileName, CFile::modeCreate|CFile::modeWrite); file.WriteString("1234567890"); file.Close(); // 追写入“abc” file.Open(FileName, CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite); file.WriteString("abc"); file.Close(); // 读出第一行字符串,并用消息框弹出 file.Open(FileName,CFile::modeRead); file.ReadString(str); file.Close(); MessageBox(str);
最终将弹出abc4567890
那么如果我们其实是想写入在文件末尾,即弹出1234567890abc,那该如何?
只要在file.WriteString("abc");前加入一句 file.SeekToEnd();。这一句的作用在于将文件指针移动到文件末尾。
4.关闭文件
同CFile类得实例一样,使用完CStdioFile记得调用Close函数将其关闭。
file.Close();