使用CStdioFile操作文件

文件操作在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;  
// 创建文件“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();  
 
 

你可能感兴趣的:(MFC,编程,file)