亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

詳解CFile與CStdioFile的文件讀寫使用方法

2020-02-24 14:28:26
字體:
來源:轉載
供稿:網友

cstdiofile類是從mfc文件類cfile派生的,它可以一行一行地讀寫文件,非常方便,今天武林技術頻道小編帶你詳解CFile與CStdioFile的文件讀寫使用方法,希望對你學習這方面知識有幫助!

CFile
//創(chuàng)建/打開文件

CFile file;
file.Open(_T("test.txt"),CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite);

文件打開模式可組合使用,用“|”隔開,常用的有以下幾種:
CFile::modeCreate:以新建方式打開,如果文件不存在,新建;如果文件已存在,把該文件長度置零,即清除文件原有內容。

CFile::modeNoTruncate:以追加方式打開,如果文件存在,打開并且不將文件長度置零,如果文件不存在,會拋出異常。一般與CFile::modeCreate一起使用,則文件不存在時,新建一個文件;存在就進行追加操作。
CFile::modeReadWrite:以讀寫方式打開文件。
CFile::modeRead:只讀。
CFile::modeWrite:只寫。

//寫入數據
CString strValue = "Hello World!";
file.Write(strValue,strValue.GetLength());

//追加數據
file.SeekToEnd(); //將指針移至文件末尾進行追加
file.Write(strValue,strValue.GetLength());

//關閉文件
file.Close();

CStdioFile
CStdioFile是CFile的派生類,對文件進行流式操作,對于文本文件的讀寫很有用處,可按行讀取寫入。

//寫入數據
CString strValue = "Hello World!";
file.WriteString(strValue);

//讀取數據
CString strRead;
file.ReadString(strRead);

當文件存在多行數據需要逐行讀取時,可用函數BOOL CStdioFile::ReadString(CString& rString),當遇到"/n "時讀取截斷,如果文件未讀完,返回true,否則返回false。

//逐行讀取文件內容,存入strRead
while(file.ReadString(strRead))
{
?...;
}

各種關于文件的操作在程序設計中是十分常見,如果能對其各種操作都了如指掌,就可以根據實際情況找到最佳的解決方案,從而在較短的時間內編寫出高效的代碼,因而熟練的掌握文件操作是十分重要的。本文將對Visual C++中有關文件操作進行全面的介紹,并對在文件操作中經常遇到的一些疑難問題進行詳細的分析。

1.文件的查找
當對一個文件操作時,如果不知道該文件是否存在,就要首先進行查找。MFC中有一個專門用來進行文件查找的類CFileFind,使用它可以方便快捷地進行文件的查找。下面這段代碼演示了這個類的最基本使用方法。

?

CString strFileTitle;
CFileFind finder;
BOOL bWorking = finder.FindFile("C://windows//sysbkup//*.cab");
while(bWorking)
{
bWorking=finder.FindNextFile();
strFileTitle=finder.GetFileTitle();
}


2.文件的打開/保存對話框
讓用戶選擇文件進行打開和存儲操作時,就要用到文件打開/保存對話框。MFC的類CFileDialog用于實現這種功能。使用CFileDialog聲明一個對象時,第一個BOOL型參數用于指定文件的打開或保存,當為TRUE時將構造一個文件打開對話框,為FALSE時構造一個文件保存對話框。

在構造CFileDialog對象時,如果在參數中指定了OFN_ALLOWMULTISELECT風格,則在此對話框中可以進行多選操作。此時要重點注意為此CFileDialog對象的m_ofn.lpstrFile分配一塊內存,用于存儲多選操作所返回的所有文件路徑名,如果不進行分配或分配的內存過小就會導致操作失敗。下面這段程序演示了文件打開對話框的使用方法。

?

?

?


CFileDialog mFileDlg(TRUE,NULL,NULL,
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,
"All Files (*.*)|*.*||",AfxGetMainWnd());
CString str(" ",10000);
mFileDlg.m_ofn.lpstrFile=str.GetBuffer(10000);
str.ReleaseBuffer();
POSITION mPos=mFileDlg.GetStartPosition();
CString pathName(" ",128);
CFileStatus status;
while(mPos!=NULL)
{
pathName=mFileDlg.GetNextPathName(mPos);
CFile::GetStatus( pathName, status );
}


3.文件的讀寫
文件的讀寫非常重要,下面將重點進行介紹。文件讀寫的最普通的方法是直接使用CFile進行,如文件的讀寫可以使用下面的方法:

//對文件進行讀操作
char sRead[2];
CFile mFile(_T("user.txt"),CFile::modeRead);
if(mFile.GetLength()<2)
return;
mFile.Read(sRead,2);
mFile.Close();

?

//對文件進行寫操作
CFile mFile(_T("user.txt "), CFile::modeWrite|CFile::modeCreate);
mFile.Write(sRead,2);
mFile.Flush();
mFile.Close();

雖然這種方法最為基本,但是它的使用繁瑣,而且功能非常簡單。我向你推薦的是使用CArchive,它的使用方法簡單且功能十分強大。首先還是用CFile聲明一個對象,然后用這個對象的指針做參數聲明一個CArchive對象,你就可以非常方便地存儲各種復雜的數據類型了。它的使用方法見下例。

//對文件進行寫操作
CString strTemp;
CFile mFile;
mFile.Open("d://dd//try.TRY",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite);
CArchive ar(&mFile,CArchive::store);
ar<<ar.Close();
mFile.Close();

//對文件進行讀操作
CFile mFile;
if(mFile.Open("d://dd//try.TRY",CFile::modeRead)==0)
return;
CArchive ar(&mFile,CArchive::load);
   ar>>strTemp;
???   ar.Close();
mFile.Close();

CArchive的 << 和>> 操作符用于簡單數據類型的讀寫,對于CObject派生類的對象的存取要使用ReadObject()和WriteObject()。使用CArchive的ReadClass()和WriteClass()還可以進行類的讀寫,如:

//存儲CAboutDlg類
ar.WriteClass(RUNTIME_CLASS(CAboutDlg));

//讀取CAboutDlg類
CRuntimeClass* mRunClass=ar.ReadClass();

//使用CAboutDlg類
CObject* pObject=mRunClass->CreateObject();
((CDialog* )pObject)->DoModal();

雖然VC提供的文檔/視結構中的文檔也可進行這些操作,但是不容易理解、使用和管理,因此雖然很多VC入門的書上花費大量篇幅講述文檔/視結構,但我建議你最好不要使用它的文檔。關于如何進行文檔/視的分離有很多書介紹,包括非常著名的《Visual C++ 技術內幕》。
如果你要進行的文件操作只是簡單的讀寫整行的字符串,我建議你使用CStdioFile,用它來進行此類操作非常方便,如下例。

?

CStdioFile mFile;
CFileException mExcept;
mFile.Open( "d://temp//aa.bat", CFile::modeWrite, &mExcept);
CString string="I am a string.";
mFile.WriteString(string);
mFile.Close();


4.臨時文件的使用
正規(guī)軟件經常用到臨時文件,你經??梢詴吹紺:/Windows/Temp目錄下有大量的擴展名為tmp的文件,這些就是程序運行是建立的臨時文件。臨時文件的使用方法基本與常規(guī)文件一樣,只是文件名應該調用函數GetTempFileName()獲得。它的第一個參數是建立此臨時文件的路徑,第二個參數是建立臨時文件名的前綴,第四個參數用于得到建立的臨時文件名。得到此臨時文件名以后,你就可以用它來建立并操作文件了,如:

?

?

?


char szTempPath[_MAX_PATH],szTempfile[_MAX_PATH];
GetTempPath(_MAX_PATH, szTempPath);
GetTempFileName(szTempPath,_T ("my_"),0,szTempfile);
CFile m_tempFile(szTempfile,CFile:: modeCreate|CFile:: modeWrite);
char m_char='a';
m_tempFile.Write(&m_char,2);
m_tempFile.Close();


5.文件的復制、刪除等
MFC中沒有提供直接進行這些操作的功能,因而要使用SDK。SDK中的文件相關函數常用的有CopyFile()、CreateDirectory()、DeleteFile()、MoveFile()。它們的用法很簡單,可參考MSDN。

?

1,判斷文件是否存在
? access(filename,mode);

2,對于不同用途又不同的文件操作,其中API函數CreateFile()也是比較有用處理方式,對于巨型文件很合適的其他的樓上的大都說了,不重復了.

[1]顯示對話框,取得文件名

?

CString FilePathName;
CFileDialog dlg(TRUE);///TRUE為OPEN對話框,FALSE為S***E AS對話框
if (dlg.DoModal() == IDOK)
??? FilePathName=dlg.GetPathName();


相關信息:CFileDialog 用于取文件名的幾個成員函數:
假如選擇的文件是C:/WINDOWS/TEST.EXE

(1)GetPathName();取文件名全稱,包括完整路徑。取回C:/WINDOWS/TEST.EXE
(2)GetFileTitle();取文件全名:TEST.EXE
(3)GetFileName();取回TEST
(4)GetFileExt();取擴展名EXE

?

[2]打開文件
CFile file("C:/HELLO.TXT",CFile::modeRead);//只讀方式打開
//CFile::modeRead可改為 CFile::modeWrite(只寫),
//CFile::modeReadWrite(讀寫),CFile::modeCreate(新建)
例子:

?

{
CFile file;
file.Open("C:/HELLO.TXT",CFile::modeCreate|Cfile::modeWrite);
.
.
.
}


[3]移動文件指針
file.Seek(100,CFile::begin);///從文件頭開始往下移動100字節(jié)
file.Seek(-50,CFile::end);///從文件末尾往上移動50字節(jié)
file.Seek(-30,CFile::current);///從當前位置往上移動30字節(jié)
file.SeekToBegin();///移到文件頭
file.SeekToEnd();///移到文件尾

?

[4]讀寫文件
讀文件:
char buffer[1000];
file.Read(buffer,1000);
寫文件:
CString string("自強不息");
file.Write(string,8);

[5]關閉文件
file.Close();

本次是武林技術頻道小編給大家?guī)淼年P于詳解CFile與CStdioFile的文件讀寫使用方法,希望這篇文章可以幫助到那些在程序員世界奮斗的你。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

日韩视频在线观看一区二区三区| 男人的天堂视频网站| 国产日韩在线| 欧美无砖砖区免费| 欧美精品日韩一区| 异国色恋浪漫潭| 日韩av字幕| 日韩城人网站| 牛牛精品在线视频| 中文字幕不卡在线| 国产少妇在线观看| 亚洲精品影院在线观看| 亚洲精品一区视频| 色偷偷网友自拍| 国产视频中文字幕| 久久大胆人体视频| 性一交一乱一区二区洋洋av| 日韩欧美一区二区三区久久婷婷| 国产视频一区二区不卡| 狠狠躁夜夜躁人人爽超碰91| 日本wwww色| 亚洲日本乱码在线观看| 91社区在线播放| 青青草国产免费| 污网站免费在线| 久久久久国产成人精品亚洲午夜| 欧美视频精品在线观看| 99久久综合99久久综合网站| 成年人网站免费视频| 久久久综合亚洲91久久98| 性欧美精品一区二区三区在线播放| 国产成人禁片在线观看| 欧美精品a∨在线观看不卡| 欧洲av在线播放| 亚洲精品乱码久久久久久蜜桃图片| 久久久精品国产免大香伊| 久久久9色精品国产一区二区三区| 国产日韩免费| 国产精品露出视频| 91精品国产高清一区二区三密臀| 永久在线免费观看| 五月婷婷之综合激情| 少妇激情综合网| 中文字幕乱码无码人妻系列蜜桃| 日韩视频免费在线播放| 亚洲女同一区二区| 精品成人免费自拍视频| 一区二区不卡视频在线观看| 精品欧美一区免费观看α√| 亚洲人被黑人高潮完整版| 国产精品一区二区在线免费观看| 亚洲国产精品久久久久婷婷软件| 中文字幕一区二区三区av| 日韩欧美国产一二三区| 国产999在线| 国产成人在线色| 精品毛片网大全| 国产精品21p| 亚洲国产精品人人爽夜夜爽| 国产日韩亚洲欧美精品| 国产裸体永久免费无遮挡| 一区二区三区免费看视频| 欧美一区午夜视频在线观看| 国产精品视频一区麻豆| 欧洲成人一区二区| 国产福利一区二区三区在线视频| 四虎www成人影院观看| 最近2019年好看中文字幕视频| 日本三级电影免费观看| 91女厕偷拍女厕偷拍高清| 日韩av中文字幕在线免费观看| 欧美黄色a视频| 欧美在线视频观看免费网站| 久草视频在线资源| 国产精品入口免费软件| 欧美三级一区二区三区| eeuss影院www在线观看手机| 精品国产乱码久久久久久樱花| 欧美一级欧美三级在线| 波多野结衣电车| av日韩亚洲| 国产香蕉久久精品综合网| 久久男人天堂| av中文字幕一区二区三区| 精品成人免费自拍视频| 精品视频在线你懂得| 四虎精品永久免费| 亚洲欧洲另类国产综合| 国产在线美女| 久久99久久99精品中文字幕| 免费观看成人在线视频| 三级黄视频在线观看| 亚洲影院免费| 亚洲91中文字幕无线码三区| 亚洲天堂影院在线观看| 国产精品一区二区免费视频| 激情小说网站亚洲综合网| 亚洲欧美日韩网| 午夜精品国产精品大乳美女| 蜜臀av性久久久久蜜臀av麻豆| 韩国视频一区二区三区| 另类视频在线| 2020日本在线视频中文字幕| 亚洲一区中文在线| 日本少妇久久久| 欧美美女一区二区三区| 国产尤物在线观看| аⅴ资源天堂资源库在线| 麻豆精品在线播放| 国产亚洲一区字幕| 首播影院在线观看免费观看电视| 欧美日韩国产麻豆| 99riav一区二区三区| 91亚洲人电影| 亚洲国产一区在线| 亚洲男人第一av| 99热国产精品| 免费a级片在线观看| 日韩在线电影| 日韩亚洲精品在线观看| 免费av片在线观看一道本| 亚洲乱亚洲乱妇| 亚洲性猛交xxxx乱大交| 欧美性猛交xxxx久久久| 亚洲欧洲成人精品av97| 成人在线高清视频| 色噜噜狠狠一区二区三区狼国成人| 在线视频你懂得一区二区三区| 欧美日韩亚洲国内综合网| 欧美精品momsxxx| wwww亚洲| 新91视频在线观看| 99久久精品国产网站| 成人乱码一区二区三区| 99国产精品免费| 亚洲精品视频一二三区| 亚洲日本va午夜在线影院| avtt天堂资源网站| 性生交生活影碟片| 欧美日韩视频免费播放| 女生裸体视频一区二区三区| 精品国产乱码久久久久久果冻传媒| 久草香蕉在线| 中文字幕免费在线不卡| 欧美成人精品网站| 在线欧美一区| 999精品久久久| 国产一区二区你懂的| 欧美a在线看| 色视频免费版高清在线观看| 日韩免费精品视频| aaaaa级片| 美女久久久久久| 麻豆中文一区二区| 精品黑人一区二区三区观看时间| 亚洲影院高清在线| 精品中文字幕在线播放| 极品色影院av| 亚洲精品日韩丝袜精品| 免费国产羞羞网站美图| 欧美黑人性受xxxx喷水| 亚洲日本在线观看| 外国成人免费视频| 黄网站视频在线观看| 精品日韩一区| 色婷婷亚洲综合| 一区二区三区在线观看国产| 人与牲动交xxxbbb| 五月婷婷激情综合网| 久久99久久久精品欧美| 久久久久久久国产精品毛片| 午夜不卡av免费| 亚洲精品一区视频| 亚洲精品乱码日韩| av免费网站在线| 欧美亚视频在线中文字幕免费| 欧美一区二区私人影院日本| 粉嫩一区二区三区在线看| 羞羞小视频视频| 国产麻豆剧果冻传媒观看hd高清| 美女av在线免费观看| 日本免费高清一区二区| 俄罗斯精品一区二区| 四虎影视在线观看2413| 精品人妻伦一区二区三区久久| 国产女人aaa级久久久级| 亚洲成a人片77777在线播放| 欧美日韩亚洲一区二| 日韩免费观看高清| 一级特黄特色的免费大片视频| 国产精品入口日韩视频大尺度| 波多野结衣二区三区| 日本不卡免费在线视频| 国产一区二区三区不卡免费观看| 69精品丰满人妻无码视频a片| 久久丁香综合五月国产三级网站| 深夜福利av| www.99re6| 欧美牲交a欧美牲交aⅴ免费下载| 久久精品国产亚洲高清剧情介绍| 麻豆专区一区二区三区四区五区| 欧美另类z0zxhd电影| 麻豆精品蜜桃一区二区三区| av中文字幕在线播放| 美女又爽又黄免费动漫| 色乱码一区二区三在线看| www.成人| 波多野结衣高清视频| 欧美日韩亚洲在线| 久久亚洲私人国产精品va媚药| 农村少妇一区二区三区四区五区| 欧美videosex性欧美黑吊| 亚洲啊v在线观看| 韩国三级丰满少妇高潮| 久草综合在线观看| 欧美v日韩v国产v| 亚洲视频一区二区在线观看| 日本我和搜子同居的日子高清在线| 亚洲国产影院| 亚洲欧洲另类精品久久综合| 久久99久久亚洲国产| 五月婷婷六月丁香综合| 亚洲综合伊人| 国模无码视频一区| 二区三区偷拍浴室洗澡视频| 欧美gay囗交囗交| 久久人人爽人人爽人人片av高清| 伊人久久大香线蕉av超碰| 久久亚洲资源中文字| 欧美成人影院| 亚洲色欲色欲www| 成人信息集中地欧美| 哺乳一区二区三区中文视频| 国产av无码专区亚洲av毛网站| 91在线无精精品一区二区| 亚洲一区在线观看视频| 极品中文字幕一区| 午夜国产一区二区三区| 久久精品国产2020观看福利| 日本在线观看免费视频| 日韩一二三区不卡| 蜜桃91麻豆精品一二三区| 国产精品夫妻激情| 免费视频91| 欧美激情一级二级| 免费一区二区三区在线视频| 成人黄动漫网站免费| 福利视频导航一区| 天天久久人人| 91制片在线观看| 精品一区二区三区视频| 亚洲美女免费在线| 成人区一区二区| 欧美色婷婷久久99精品红桃| 91porn在线视频| 国产精品久久久久久久久久妞妞| 国产精品一区二区三| 亚洲午夜精品久久久久久性色| 久久久久成人精品无码中文字幕| 欧美久久成人| 色99中文字幕| av播放在线| 人人干人人草| 欧洲精品99毛片免费高清观看| 日韩av在线免播放器| 女人公敌韩国| 你懂的免费在线观看| 99视频资源网| 老司机免费视频一区二区三区| 久久久亚洲精品视频| 国产卡一卡2卡三卡免费视频| 懂色av一区二区| 99国内精品久久久久| 久久精品视频在线播放| 9i在线看片成人免费| 久久黄色免费看| 亚洲精品中文字幕成人片| 精品国产乱码一区二区三区四区| 欧美精品一区二区三区久久| 免费不卡av| 欧美色综合影院| 亚洲综合激情| 伊人久久久久久久久久久久| eeuss影院95999部| 欧洲av一区二区| 亚洲爆乳无码精品aaa片蜜桃| 中文字幕乱码亚洲无线精品一区| 久久免费少妇高潮99精品| 无码av免费一区二区三区试看| 亚洲成aⅴ人片久久青草影院| 日韩成人xxxx| 一级毛片在线播放| 91av在线免费观看视频| 色播视频在线播放| 久久综合狠狠综合久久激情| 欧美日韩亚洲综合一区二区三区激情在线| 天堂中文在线官网| 午夜久久电影网| 国产欧美日韩精品在线| 精品产品国产在线不卡| 久久久精品有限公司| 欧美日韩国产三级| 曰本三级日本三级日本三级| 在线免费av导航| 欧美色图片区| 麻豆影视在线观看| 国产a级黄色片| 99视频只有精品| 日本一区二区三区视频在线观看| 超碰在线中文| 香蕉视频911| 黑人一区二区三区四区五区| 精品少妇人妻av一区二区| jizz中国少妇| 国产精品高潮粉嫩av| 亚洲综合影视| 中文字幕免费在线看| 国产日本欧洲亚洲| 欧美一区二区公司| 亚洲成人日韩| 亚洲电影免费| 性做久久久久久久免费看| 在线免费精品视频| 最近最好的中文字幕2019免费| 精品国产精品国产偷麻豆| 成人精品一区二区三区校园激情| 欧美日韩美女| 激情亚洲综合在线|