青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 224  文章 - 41  trackbacks - 0
<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

享受編程

常用鏈接

留言簿(11)

隨筆分類(159)

隨筆檔案(224)

文章分類(2)

文章檔案(4)

經(jīng)典c++博客

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

原文地址:http://blog.csdn.net/zhuang_rui/archive/2007/09/28/1804875.aspx
各種關(guān)于文件的操作在程序設(shè)計(jì)中是十分常見(jiàn),如果能對(duì)其各種操作都了如指掌,就可以根據(jù)實(shí)際情況找到最佳的解決方案,從而在較短的時(shí)間內(nèi)編寫(xiě)出高效的代碼,因而熟練的掌握文件操作是十分重要的。本文將對(duì)Visual C++中有關(guān)文件操作進(jìn)行全面的介紹,并對(duì)在文件操作中經(jīng)常遇到的一些疑難問(wèn)題進(jìn)行詳細(xì)的分析。
  1.文件的查找
  當(dāng)對(duì)一個(gè)文件操作時(shí),如果不知道該文件是否存在,就要首先進(jìn)行查找。MFC中有一個(gè)專門(mén)用來(lái)進(jìn)行文件查找的類CFileFind,使用它可以方便快捷地進(jìn)行文件的查找。下面這段代碼演示了這個(gè)類的最基本使用方法。
  CString strFileTitle;
  CFileFind finder;
  BOOL bWorking = finder.FindFile("C:\\windows\\sysbkup\\*.cab");
  while(bWorking)
  {
  bWorking=finder.FindNextFile();
  strFileTitle=finder.GetFileTitle();
  }
  2.文件的打開(kāi)/保存對(duì)話框
  讓用戶選擇文件進(jìn)行打開(kāi)和存儲(chǔ)操作時(shí),就要用到文件打開(kāi)/保存對(duì)話框。MFC的類CFileDialog用于實(shí)現(xiàn)這種功能。使用CFileDialog聲明一個(gè)對(duì)象時(shí),第一個(gè)BOOL型參數(shù)用于指定文件的打開(kāi)或保存,當(dāng)為T(mén)RUE時(shí)將構(gòu)造一個(gè)文件打開(kāi)對(duì)話框,為FALSE時(shí)構(gòu)造一個(gè)文件保存對(duì)話框。
  在構(gòu)造CFileDialog對(duì)象時(shí),如果在參數(shù)中指定了OFN_ALLOWMULTISELECT風(fēng)格,則在此對(duì)話框中可以進(jìn)行多選操作。此時(shí)要重點(diǎn)注意為此CFileDialog對(duì)象的m_ofn.lpstrFile分配一塊內(nèi)存,用于存儲(chǔ)多選操作所返回的所有文件路徑名,如果不進(jìn)行分配或分配的內(nèi)存過(guò)小就會(huì)導(dǎo)致操作失敗。下面這段程序演示了文件打開(kāi)對(duì)話框的使用方法。
  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.文件的讀寫(xiě)
  文件的讀寫(xiě)非常重要,下面將重點(diǎn)進(jìn)行介紹。文件讀寫(xiě)的最普通的方法是直接使用CFile進(jìn)行,如文件的讀寫(xiě)可以使用下面的方法:
  //對(duì)文件進(jìn)行讀操作
  char sRead[2];
  CFile mFile(_T("user.txt"),CFile::modeRead);
  if(mFile.GetLength()<2)
  return;
  mFile.Read(sRead,2);
  mFile.Close();
  //對(duì)文件進(jìn)行寫(xiě)操作
  CFile mFile(_T("user.txt "), CFile::modeWrite|CFile::modeCreate);
  mFile.Write(sRead,2);
  mFile.Flush();
  mFile.Close();
  雖然這種方法最為基本,但是它的使用繁瑣,而且功能非常簡(jiǎn)單。我向你推薦的是使用CArchive,它的使用方法簡(jiǎn)單且功能十分強(qiáng)大。首先還是用CFile聲明一個(gè)對(duì)象,然后用這個(gè)對(duì)象的指針做參數(shù)聲明一個(gè)CArchive對(duì)象,你就可以非常方便地存儲(chǔ)各種復(fù)雜的數(shù)據(jù)類型了。它的使用方法見(jiàn)下例。
  //對(duì)文件進(jìn)行寫(xiě)操作
  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();
  //對(duì)文件進(jìn)行讀操作
  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的 << 和>> 操作符用于簡(jiǎn)單數(shù)據(jù)類型的讀寫(xiě),對(duì)于CObject派生類的對(duì)象的存取要使用ReadObject()和WriteObject()。使用CArchive的ReadClass()和WriteClass()還可以進(jìn)行類的讀寫(xiě),如:
  //存儲(chǔ)CAboutDlg類
  ar.WriteClass(RUNTIME_CLASS(CAboutDlg));
  //讀取CAboutDlg類
  CRuntimeClass* mRunClass=ar.ReadClass();
  //使用CAboutDlg類
  CObject* pObject=mRunClass->CreateObject();
      ((CDialog* )pObject)->DoModal();
  雖然VC提供的文檔/視結(jié)構(gòu)中的文檔也可進(jìn)行這些操作,但是不容易理解、使用和管理,因此雖然很多VC入門(mén)的書(shū)上花費(fèi)大量篇幅講述文檔/視結(jié)構(gòu),但我建議你最好不要使用它的文檔。關(guān)于如何進(jìn)行文檔/視的分離有很多書(shū)介紹,包括非常著名的《Visual C++ 技術(shù)內(nèi)幕》。
  如果你要進(jìn)行的文件操作只是簡(jiǎn)單的讀寫(xiě)整行的字符串,我建議你使用CStdioFile,用它來(lái)進(jìn)行此類操作非常方便,如下例。
  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.臨時(shí)文件的使用

  正規(guī)軟件經(jīng)常用到臨時(shí)文件,你經(jīng)常可以會(huì)看到C:\Windows\Temp目錄下有大量的擴(kuò)展名為tmp的文件,這些就是程序運(yùn)行是建立的臨時(shí)文件。臨時(shí)文件的使用方法基本與常規(guī)文件一樣,只是文件名應(yīng)該調(diào)用函數(shù)GetTempFileName()獲得。它的第一個(gè)參數(shù)是建立此臨時(shí)文件的路徑,第二個(gè)參數(shù)是建立臨時(shí)文件名的前綴,第四個(gè)參數(shù)用于得到建立的臨時(shí)文件名。得到此臨時(shí)文件名以后,你就可以用它來(lái)建立并操作文件了,如:
  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.文件的復(fù)制、刪除等
  MFC中沒(méi)有提供直接進(jìn)行這些操作的功能,因而要使用SDK。SDK中的文件相關(guān)函數(shù)常用的有CopyFile()、CreateDirectory()、DeleteFile()、MoveFile()。它們的用法很簡(jiǎn)單,可參考MSDN。

1,判斷文件是否存在
    access(filename,mode);
2,對(duì)于不同用途又不同的文件操作,其中API函數(shù)CreateFile()也是比較有用處理方式,對(duì)于巨型文件很合適的其他的樓上的大都說(shuō)了,不重復(fù)了.

[1]顯示對(duì)話框,取得文件名

CString FilePathName;
CFileDialog dlg(TRUE);///TRUE為OPEN對(duì)話框,F(xiàn)ALSE為S***E AS對(duì)話框
if (dlg.DoModal() == IDOK)
    FilePathName=dlg.GetPathName();

相關(guān)信息:CFileDialog 用于取文件名的幾個(gè)成員函數(shù):
假如選擇的文件是C:\WINDOWS\TEST.EXE
則(1)GetPathName();取文件名全稱,包括完整路徑。取回C:\WINDOWS\TEST.EXE
(2)GetFileTitle();取文件全名:TEST.EXE
(3)GetFileName();取回TEST
(4)GetFileExt();取擴(kuò)展名EXE

[2]打開(kāi)文件
CFile file("C:\HELLO.TXT",CFile::modeRead);//只讀方式打開(kāi)
//CFile::modeRead可改為 CFile::modeWrite(只寫(xiě)),
//CFile::modeReadWrite(讀寫(xiě)),CFile::modeCreate(新建)
例子:
{
CFile file;
file.Open("C:\HELLO.TXT",CFile::modeCreate|Cfile::modeWrite);
.
.
.
}

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

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

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


本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/zhuang_rui/archive/2007/09/28/1804875.aspx

posted on 2010-03-22 11:09 漂漂 閱讀(423) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 深入vc++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            免费精品99久久国产综合精品| 狠色狠色综合久久| 一本一本久久a久久精品综合妖精| 老司机精品视频一区二区三区| 亚洲视频网站在线观看| 国产精品99久久久久久久久久久久 | 亚洲国产欧美一区| 欧美日韩一区不卡| 欧美区二区三区| 欧美好吊妞视频| 欧美激情亚洲综合一区| 欧美日韩美女一区二区| 国产精品久久国产愉拍| 国产精品最新自拍| 狠狠做深爱婷婷久久综合一区| 亚洲激情一区二区三区| 99av国产精品欲麻豆| 亚洲资源av| 玖玖国产精品视频| 亚洲欧洲在线一区| 亚洲午夜久久久久久久久电影院| 香蕉免费一区二区三区在线观看| 美女精品国产| 国产模特精品视频久久久久 | 99精品国产在热久久婷婷| 亚洲小视频在线观看| 久久精品中文| 日韩视频在线观看一区二区| 欧美另类videos死尸| 欧美大片在线看| 99成人在线| 久久久欧美一区二区| 欧美日韩国产黄| 在线观看国产一区二区| 亚洲欧美成人综合| 亚洲高清网站| 久久精品视频免费| 国产精品午夜av在线| 亚洲精品一区二区三区在线观看| 亚洲欧美综合精品久久成人| 亚洲国产成人精品女人久久久 | 在线一区二区三区做爰视频网站 | 欧美了一区在线观看| 国产专区欧美专区| 亚洲尤物在线视频观看| 欧美国产综合| 久久综合国产精品| 国产伦精品一区二区三区| 亚洲视屏一区| 亚洲国产美女| 欧美黄色aa电影| 国产在线观看精品一区二区三区| 亚洲一本大道在线| 亚洲伦理久久| 欧美日韩情趣电影| 亚洲国产老妈| 欧美国产日产韩国视频| 美女图片一区二区| 亚洲高清不卡在线观看| 久久久之久亚州精品露出| 亚洲一区久久久| 国产精品乱码妇女bbbb| 午夜精品久久99蜜桃的功能介绍| 日韩午夜在线电影| 国产精品成人在线| 欧美一区综合| 久久激情久久| 在线看不卡av| 亚洲精品中文在线| 欧美午夜精品久久久| 亚洲欧美欧美一区二区三区| 亚洲性色视频| 韩日精品视频| 亚洲国产精品高清久久久| 欧美另类变人与禽xxxxx| 亚洲男人的天堂在线观看| 亚洲一区视频| 欧美中日韩免费视频| 久久精品视频va| 欧美一区二区三区四区在线观看| 国产日韩综合| 欧美成人a∨高清免费观看| 免费视频一区二区三区在线观看| 日韩亚洲不卡在线| 99视频热这里只有精品免费| 欧美激情在线有限公司| 亚洲免费观看高清完整版在线观看| 日韩视频在线观看免费| 国产欧美日韩亚州综合| 久久国产精品99国产| 欧美成人高清视频| 香蕉久久夜色精品国产使用方法| 久久婷婷综合激情| 亚洲影视九九影院在线观看| 欧美一级夜夜爽| 亚洲人人精品| 午夜一区在线| 9久re热视频在线精品| 午夜亚洲影视| 一本一道久久综合狠狠老精东影业| 亚洲乱码国产乱码精品精可以看| 国模叶桐国产精品一区| 亚洲日本中文| 影音先锋一区| 亚洲综合另类| 亚洲精品资源| 欧美在线一二三区| 一区二区三区高清在线观看| 欧美中文日韩| 亚洲欧美久久| 欧美精品系列| 免费国产一区二区| 欧美午夜一区二区三区免费大片| 久热这里只精品99re8久| 欧美日韩综合在线免费观看| 免费一区二区三区| 国产精品高清一区二区三区| 欧美成人精品| 国产欧美日韩亚州综合| 亚洲社区在线观看| 在线亚洲一区二区| 欧美激情在线观看| 欧美激情亚洲自拍| 激情国产一区二区| 亚洲欧美一区二区原创| 亚洲欧美国产另类| 欧美日韩一区二区免费视频| 亚洲国产精品久久| 最新成人av网站| 暖暖成人免费视频| 亚洲国产一区二区三区高清| 亚洲狠狠婷婷| 欧美成人精品1314www| 欧美成人首页| 亚洲高清视频在线观看| 久久精品一区二区三区不卡牛牛 | 麻豆精品视频在线| 黄色成人在线网站| 久久riav二区三区| 久久精品国产精品亚洲精品| 国产精品成人观看视频国产奇米| 亚洲理伦在线| 一本色道精品久久一区二区三区| 欧美一区二区在线免费播放| 羞羞漫画18久久大片| 欧美视频中文在线看| 亚洲精品免费电影| 一区二区av| 欧美视频在线观看视频极品 | 久久久久国产精品一区二区| 国产日韩欧美精品综合| 欧美一区二区啪啪| 欧美在线观看一区二区| 国产模特精品视频久久久久| 欧美在线一区二区三区| 狂野欧美激情性xxxx欧美| 亚洲韩国精品一区| 欧美日韩成人一区二区| 99精品福利视频| 亚洲综合三区| 好吊一区二区三区| 欧美电影免费观看大全| 99re66热这里只有精品4| 亚洲欧美伊人| 狠狠色综合网站久久久久久久| 久久在线精品| 日韩一级免费| 欧美在线一二三区| 最新高清无码专区| 欧美私人啪啪vps| 欧美一区视频| 亚洲福利一区| 欧美呦呦网站| 亚洲精品一区中文| 国产精品午夜电影| 久久先锋资源| 亚洲精品自在在线观看| 亚洲女同在线| 亚洲伦理一区| 国内精品久久久久影院色| 欧美精品情趣视频| 欧美亚洲一区三区| 91久久国产综合久久| 久久se精品一区精品二区| 亚洲精品日韩在线| 韩国久久久久| 国产精品久久久久秋霞鲁丝| 免费在线国产精品| 亚洲欧美一区二区原创| 91久久久久久久久| 美玉足脚交一区二区三区图片| 亚洲午夜视频在线观看| 亚洲电影免费观看高清完整版在线 | 欧美v国产在线一区二区三区| 一区二区三区高清不卡| 欧美mv日韩mv亚洲| 久久久999精品免费| 午夜国产一区| 亚洲免费视频一区二区| 日韩系列欧美系列|