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

隨筆 - 224  文章 - 41  trackbacks - 0
<2010年4月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

享受編程

常用鏈接

留言簿(11)

隨筆分類(159)

隨筆檔案(224)

文章分類(2)

文章檔案(4)

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

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

原文地址:http://blog.csdn.net/zhuang_rui/archive/2007/09/28/1804875.aspx
各種關(guān)于文件的操作在程序設(shè)計中是十分常見,如果能對其各種操作都了如指掌,就可以根據(jù)實際情況找到最佳的解決方案,從而在較短的時間內(nèi)編寫出高效的代碼,因而熟練的掌握文件操作是十分重要的。本文將對Visual C++中有關(guān)文件操作進行全面的介紹,并對在文件操作中經(jīng)常遇到的一些疑難問題進行詳細的分析。
  1.文件的查找
  當(dāng)對一個文件操作時,如果不知道該文件是否存在,就要首先進行查找。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用于實現(xiàn)這種功能。使用CFileDialog聲明一個對象時,第一個BOOL型參數(shù)用于指定文件的打開或保存,當(dāng)為TRUE時將構(gòu)造一個文件打開對話框,為FALSE時構(gòu)造一個文件保存對話框。
  在構(gòu)造CFileDialog對象時,如果在參數(shù)中指定了OFN_ALLOWMULTISELECT風(fēng)格,則在此對話框中可以進行多選操作。此時要重點注意為此CFileDialog對象的m_ofn.lpstrFile分配一塊內(nèi)存,用于存儲多選操作所返回的所有文件路徑名,如果不進行分配或分配的內(nèi)存過小就會導(dǎo)致操作失敗。下面這段程序演示了文件打開對話框的使用方法。
  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聲明一個對象,然后用這個對象的指針做參數(shù)聲明一個CArchive對象,你就可以非常方便地存儲各種復(fù)雜的數(shù)據(jù)類型了。它的使用方法見下例。
  //對文件進行寫操作
  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的 << 和>> 操作符用于簡單數(shù)據(jù)類型的讀寫,對于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提供的文檔/視結(jié)構(gòu)中的文檔也可進行這些操作,但是不容易理解、使用和管理,因此雖然很多VC入門的書上花費大量篇幅講述文檔/視結(jié)構(gòu),但我建議你最好不要使用它的文檔。關(guān)于如何進行文檔/視的分離有很多書介紹,包括非常著名的《Visual C++ 技術(shù)內(nèi)幕》。
  如果你要進行的文件操作只是簡單的讀寫整行的字符串,我建議你使用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ī)軟件經(jīng)常用到臨時文件,你經(jīng)常可以會看到C:\Windows\Temp目錄下有大量的擴展名為tmp的文件,這些就是程序運行是建立的臨時文件。臨時文件的使用方法基本與常規(guī)文件一樣,只是文件名應(yīng)該調(diào)用函數(shù)GetTempFileName()獲得。它的第一個參數(shù)是建立此臨時文件的路徑,第二個參數(shù)是建立臨時文件名的前綴,第四個參數(shù)用于得到建立的臨時文件名。得到此臨時文件名以后,你就可以用它來建立并操作文件了,如:
  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中沒有提供直接進行這些操作的功能,因而要使用SDK。SDK中的文件相關(guān)函數(shù)常用的有CopyFile()、CreateDirectory()、DeleteFile()、MoveFile()。它們的用法很簡單,可參考MSDN。

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

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

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

相關(guān)信息:CFileDialog 用于取文件名的幾個成員函數(shù):
假如選擇的文件是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);///從當(dāng)前位置往上移動30字節(jié)
file.SeekToBegin();///移到文件頭
file.SeekToEnd();///移到文件尾

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

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


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

posted on 2010-03-22 11:09 漂漂 閱讀(423) 評論(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>
            乱码第一页成人| 欧美第一黄色网| 亚洲国产高清在线| 国产欧美一区二区三区另类精品 | 亚洲一区二区免费在线| 亚洲性图久久| 欧美一区二视频| 久久久亚洲综合| 欧美高清视频一区二区| 亚洲免费av网站| 亚洲在线免费视频| 蜜臀av在线播放一区二区三区| 欧美人成在线视频| 国产精品夜夜夜| 在线日韩av| 亚洲永久在线| 欧美/亚洲一区| 亚洲免费av电影| 久久av一区二区三区亚洲| 久久午夜影视| 国产精品ⅴa在线观看h| 伊人天天综合| 香港成人在线视频| 亚洲国产mv| 欧美日韩在线一二三| 亚洲欧美美女| 麻豆精品视频| 国产精品日日摸夜夜摸av| 国产精品视频成人| 亚洲精品孕妇| 欧美与欧洲交xxxx免费观看| 久久只有精品| 国产精品一区二区三区久久久 | 欧美成黄导航| 国产一区二区久久久| 9l国产精品久久久久麻豆| 久久经典综合| 一区二区三区精品| 欧美成人激情视频| 好看不卡的中文字幕| 亚洲欧美精品中文字幕在线| 欧美激情亚洲自拍| 久久精品在线观看| 国产婷婷色一区二区三区| 在线性视频日韩欧美| 亚洲国产第一页| 久久蜜桃资源一区二区老牛| 国产亚洲福利社区一区| 午夜视频一区二区| 亚洲特黄一级片| 欧美色图五月天| 夜夜嗨网站十八久久| 欧美成人按摩| 玖玖精品视频| 亚洲欧洲一区二区三区久久| 久久综合狠狠综合久久综合88| 亚洲免费在线观看视频| 国产精品99免费看| 亚洲一区二区三区视频| 一区二区三区产品免费精品久久75| 欧美精品一区二区三区很污很色的 | 久久久久亚洲综合| 欧美一级电影久久| 国产午夜精品全部视频在线播放| 亚洲欧美乱综合| 亚洲小说春色综合另类电影| 欧美日韩在线观看视频| 亚洲一级免费视频| 亚洲永久免费av| 国产欧美欧美| 久久精品理论片| 久久精品视频免费| 最新国产精品拍自在线播放| 欧美激情在线有限公司| 欧美国产在线观看| 中日韩美女免费视频网址在线观看 | 欧美顶级少妇做爰| 亚洲人成网站影音先锋播放| 亚洲国产婷婷香蕉久久久久久99 | 国产精品亚洲成人| 久久精品国产99国产精品澳门| 久久不射电影网| 亚洲激情视频| 一本到高清视频免费精品| 国产精品久久网站| 久久久精品久久久久| 欧美va天堂| 香蕉亚洲视频| 美女脱光内衣内裤视频久久影院| 一区二区免费在线视频| 亚洲免费在线播放| 亚洲破处大片| 羞羞色国产精品| 亚洲精品1区| 亚洲一区二区三区高清不卡| 一区精品在线| 亚洲一区二区三区久久| 在线成人av.com| 一本大道久久a久久精二百| 激情五月***国产精品| 99国产精品久久久久久久成人热| 黑人巨大精品欧美黑白配亚洲| 亚洲国产美国国产综合一区二区| 国产麻豆午夜三级精品| 亚洲第一网站免费视频| 国产欧美日韩另类一区| 亚洲精品久久久久久久久久久| 国产伦精品一区二区三区高清| 亚洲国产精品一区制服丝袜 | 99re66热这里只有精品4| 亚洲资源av| 一本在线高清不卡dvd| 久久久青草婷婷精品综合日韩| 亚洲天堂久久| 欧美激情 亚洲a∨综合| 久久亚洲一区二区| 国产精品日韩专区| 亚洲另类黄色| 亚洲人被黑人高潮完整版| 性欧美videos另类喷潮| 亚洲视频在线看| 久热精品在线| 国产一区二区福利| 亚洲女人小视频在线观看| 亚洲中午字幕| 欧美日韩三区| 亚洲免费福利视频| 亚洲人线精品午夜| 美女精品在线| 欧美国产日本高清在线| 激情六月婷婷综合| 欧美在线黄色| 久久麻豆一区二区| 狠狠久久亚洲欧美专区| 久久国产精品72免费观看| 久久婷婷国产综合精品青草| 国产一区二区三区不卡在线观看| 亚洲免费一区二区| 亚洲精品色图| 欧美国产一区二区| 亚洲全部视频| 一本色道久久综合狠狠躁篇怎么玩| 农村妇女精品| 亚洲激情视频在线观看| 亚洲精品在线二区| 欧美精品导航| 一本久久综合亚洲鲁鲁五月天| 亚洲一本大道在线| 国产精品久久久久一区二区| 亚洲影视中文字幕| 久久久综合香蕉尹人综合网| 狠狠入ady亚洲精品经典电影| 久久在线播放| 亚洲精选在线观看| 午夜视频一区二区| 伊人久久大香线蕉综合热线| 欧美成人精品激情在线观看| 日韩视频免费观看高清在线视频| 亚洲欧美一区二区三区在线| 国产亚洲一区在线| 蜜月aⅴ免费一区二区三区| 亚洲日本激情| 欧美在线免费观看| 亚洲国产精品一区二区尤物区 | 噜噜噜噜噜久久久久久91| 欧美高清在线视频| 亚洲在线观看免费| 影音先锋国产精品| 欧美日韩在线播放一区| 久久国产精品第一页| 亚洲精品一品区二品区三品区| 欧美在线免费| aa级大片欧美三级| 红桃视频欧美| 欧美天天在线| 久久久亚洲国产天美传媒修理工| 亚洲日本电影| 久久香蕉国产线看观看av| 宅男噜噜噜66一区二区 | 欧美不卡福利| 亚洲欧美中文日韩v在线观看| 欧美大尺度在线| 欧美一区二区三区婷婷月色| 亚洲精品久久久久久久久久久久久| 国产精品美女xx| 欧美精品久久久久久久| 欧美在线播放高清精品| 一区二区三区四区五区精品| 欧美国产三区| 久久亚洲精品一区| 欧美一区二区精品久久911| 亚洲毛片视频| 亚洲高清毛片| 国产日韩一区二区三区| 国产精品久久久久久妇女6080| 欧美xxx成人| 欧美99久久| 久久久久久综合网天天| 西西裸体人体做爰大胆久久久| 夜夜嗨av一区二区三区免费区|