文件操作在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+"\r\n";
}
这里用”\r\n”来为字符串加上换行。
3.写入文件
file.WriteString(str);
这里很值得注意一下,CStdioFile类没有提供逐行写入的方法,只有自己在文件内容行的末尾增加"\n"或者"\r\n"实现换行的功能,如果文件的打开模式设置了CFile::modeNoTruncate,那么字符串将以追加的形式写入,并且是从文件指针现在所处位置写起。
比如:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
CString FileName(
"test.txt"
),str(
""
);
CStdioFile file;
file.Open(FileName, CFile::modeCreate|CFile::modeWrite);
file.WriteString(
"1234567890"
);
file.Close();
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();