?? 可以看看,尤其最后幾行可能有用.htm
字號:
href="http://www.vctop.com/list.asp?CateID=7">CRACK</A> | <A
href="http://www.vctop.com/list.asp?CateID=8">OICQ</A> | <A
href="http://www.vctop.com/list.asp?CateID=9">VIRUS</A>
</TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=1 width=780 align=center border=0>
<TBODY>
<TR>
<FORM name=form action=Search.asp method=post>
<TD bgColor=#efefef>
<SCRIPT language=JavaScript1.1
src="可以看看,尤其最后幾行可能有用.files/jsSearch.js"></SCRIPT>
</TD></FORM>
<TD align=middle bgColor=#efefef> </TD></TR></TBODY></TABLE>
<TABLE width=780 align=center bgColor=#efefef border=0>
<TBODY>
<TR>
<TD bgColor=#ffffff>VC++中的文件操作
<P><BR>各種關于文件的操作在程序設計中是十分常見,如果能對其各種操作都了如指掌,就可以根據實際情況找到最佳的解決方案,從而在較短的時間內編寫出高效的代碼,因而熟練的掌握文件操作是十分重要的。本文將對Visual
C++中有關文件操作進行全面的介紹,并對在文件操作中經常遇到的一些疑難問題進行詳細的分析。<BR> 1.文件的查找
<BR> 當對一個文件操作時,如果不知道該文件是否存在,就要首先進行查找。MFC中有一個專門用來進行文件查找的類CFileFind,使用它可以方便快捷地進行文件的查找。下面這段代碼演示了這個類的最基本使用方法。
<BR> CString strFileTitle; <BR> CFileFind finder; <BR> BOOL bWorking =
finder.FindFile("C:\\windows\\sysbkup\\*.cab"); <BR> while(bWorking)
<BR> { <BR> bWorking=finder.FindNextFile();
<BR> strFileTitle=finder.GetFileTitle(); <BR> } <BR> 2.文件的打開/保存對話框
<BR> 讓用戶選擇文件進行打開和存儲操作時,就要用到文件打開/保存對話框。MFC的類CFileDialog用于實現這種功能。使用CFileDialog聲明一個對象時,第一個BOOL型參數用于指定文件的打開或保存,當為TRUE時將構造一個文件打開對話框,為FALSE時構造一個文件保存對話框。
<BR> 在構造CFileDialog對象時,如果在參數中指定了OFN_ALLOWMULTISELECT風格,則在此對話框中可以進行多選操作。此時要重點注意為此CFileDialog對象的m_ofn.lpstrFile分配一塊內存,用于存儲多選操作所返回的所有文件路徑名,如果不進行分配或分配的內存過小就會導致操作失敗。下面這段程序演示了文件打開對話框的使用方法。
<BR> CFileDialog mFileDlg(TRUE,NULL,NULL,
<BR> OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,
<BR> "All Files (*.*)|*.*||",AfxGetMainWnd()); <BR> CString str("
",10000); <BR> mFileDlg.m_ofn.lpstrFile=str.GetBuffer(10000);
<BR> str.ReleaseBuffer(); <BR> POSITION
mPos=mFileDlg.GetStartPosition(); <BR> CString pathName(" ",128);
<BR> CFileStatus status; <BR> while(mPos!=NULL) <BR> {
<BR> pathName=mFileDlg.GetNextPathName(mPos); <BR> CFile::GetStatus(
pathName, status ); <BR> } <BR> 3.文件的讀寫
<BR> 文件的讀寫非常重要,下面將重點進行介紹。文件讀寫的最普通的方法是直接使用CFile進行,如文件的讀寫可以使用下面的方法:
<BR> //對文件進行讀操作 <BR> char sRead[2]; <BR> CFile
mFile(_T("user.txt"),CFile::modeRead); <BR> if(mFile.GetLength()<2)
<BR> return; <BR> mFile.Read(sRead,2); <BR> mFile.Close();
<BR> //對文件進行寫操作 <BR> CFile mFile(_T("user.txt "),
CFile::modeWrite|CFile::modeCreate); <BR> mFile.Write(sRead,2);
<BR> mFile.Flush(); <BR> mFile.Close();
<BR> 雖然這種方法最為基本,但是它的使用繁瑣,而且功能非常簡單。我向你推薦的是使用CArchive,它的使用方法簡單且功能十分強大。首先還是用CFile聲明一個對象,然后用這個對象的指針做參數聲明一個CArchive對象,你就可以非常方便地存儲各種復雜的數據類型了。它的使用方法見下例。
<BR> //對文件進行寫操作 <BR> CString strTemp; <BR> CFile mFile;
<BR> mFile.Open("d:\\dd\\try.TRY",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite);
<BR> CArchive ar(&mFile,CArchive::store);
<BR> ar<< ar.Close(); <BR> mFile.Close(); <BR> //對文件進行讀操作
<BR> CFile mFile;
<BR> if(mFile.Open("d:\\dd\\try.TRY",CFile::modeRead)==0) <BR> return;
<BR> CArchive ar(&mFile,CArchive::load); <BR> ar>>strTemp;
<BR> ar.Close(); <BR> mFile.Close(); <BR> CArchive的 << 和>>
操作符用于簡單數據類型的讀寫,對于CObject派生類的對象的存取要使用ReadObject()和WriteObject()。使用CArchive的ReadClass()和WriteClass()還可以進行類的讀寫,如:
<BR> //存儲CAboutDlg類 <BR> ar.WriteClass(RUNTIME_CLASS(CAboutDlg));
<BR> //讀取CAboutDlg類 <BR> CRuntimeClass* mRunClass=ar.ReadClass();
<BR> //使用CAboutDlg類 <BR> CObject* pObject=mRunClass->CreateObject();
<BR> ((CDialog* )pObject)->DoModal();
<BR> 雖然VC提供的文檔/視結構中的文檔也可進行這些操作,但是不容易理解、使用和管理,因此雖然很多VC入門的書上花費大量篇幅講述文檔/視結構,但我建議你最好不要使用它的文檔。關于如何進行文檔/視的分離有很多書介紹,包括非常著名的《Visual
C++ 技術內幕》。
<BR> 如果你要進行的文件操作只是簡單的讀寫整行的字符串,我建議你使用CStdioFile,用它來進行此類操作非常方便,如下例。
<BR> CStdioFile mFile; <BR> CFileException mExcept; <BR> mFile.Open(
"d:\\temp\\aa.bat", CFile::modeWrite, &mExcept); <BR> CString
string="I am a string."; <BR> mFile.WriteString(string);
<BR> mFile.Close(); <BR> 4.臨時文件的使用
<BR><BR> 正規軟件經常用到臨時文件,你經常可以會看到C:\Windows\Temp目錄下有大量的擴展名為tmp的文件,這些就是程序運行是建立的臨時文件。臨時文件的使用方法基本與常規文件一樣,只是文件名應該調用函數GetTempFileName()獲得。它的第一個參數是建立此臨時文件的路徑,第二個參數是建立臨時文件名的前綴,第四個參數用于得到建立的臨時文件名。得到此臨時文件名以后,你就可以用它來建立并操作文件了,如:
<BR> char szTempPath[_MAX_PATH],szTempfile[_MAX_PATH];
<BR> GetTempPath(_MAX_PATH, szTempPath);
<BR> GetTempFileName(szTempPath,_T ("my_"),0,szTempfile); <BR> CFile
m_tempFile(szTempfile,CFile:: modeCreate|CFile:: modeWrite); <BR> char
m_char='a'; <BR> m_tempFile.Write(&m_char,2);
<BR> m_tempFile.Close(); <BR> 5.文件的復制、刪除等
<BR> MFC中沒有提供直接進行這些操作的功能,因而要使用SDK。SDK中的文件相關函數常用的有CopyFile()、CreateDirectory()、DeleteFile()、MoveFile()。它們的用法很簡單,可參考MSDN。</P>
<P><BR>**************************************************************************************************<BR>×××××××××××××××××××××××××××××××××××××××××××××××××<BR>**************************************************************************************************<BR>如何進行文件操作</P>
<P>[1]顯示對話框,取得文件名</P>
<P>CString FilePathName;<BR>CFileDialog
dlg(TRUE);///TRUE為OPEN對話框,FALSE為SAVE AS對話框<BR>if (dlg.DoModal() ==
IDOK)<BR>FilePathName=dlg.GetPathName();</P>
<P>相關信息:CFileDialog
用于取文件名的幾個成員函數:<BR>假如選擇的文件是C:\WINDOWS\TEST.EXE<BR>則(1)GetPathName();取文件名全稱,包括完整路徑。取回C:\WINDOWS\TEST.EXE<BR>(2)GetFileTitle();取文件全名:TEST.EXE<BR>(3)GetFileName();取回TEST<BR>(4)GetFileExt();取擴展名EXE</P>
<P>[2]打開文件<BR>CFile
file("C:\HELLO.TXT",CFile::modeRead);//只讀方式打開<BR>//CFile::modeRead可改為
CFile::modeWrite(只寫),<BR>//CFile::modeReadWrite(讀寫),CFile::modeCreate(新建)<BR>例子:<BR>{<BR>CFile
file;<BR>file.Open("C:\HELLO.TXT",CFile::modeCreate|Cfile::modeWrite);<BR>.<BR>.<BR>.<BR>}</P>
<P>[3]移動文件指針<BR>file.Seek(100,CFile::begin);///從文件頭開始往下移動100字節<BR>file.Seek(-50,CFile::end);///從文件末尾往上移動50字節<BR>file.Seek(-30,CFile::current);///從當前位置往上移動30字節<BR>file.SeekToBegin();///移到文件頭<BR>file.SeekToEnd();///移到文件尾</P>
<P>[4]讀寫文件<BR>讀文件:<BR>char
buffer[1000];<BR>file.Read(buffer,1000);<BR>寫文件:<BR>CString
string("自強不息");<BR>file.Write(string,8);</P>
<P>[5]關閉文件<BR>file.Close();</P>
<P></P></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=780 align=center
background=可以看看,尤其最后幾行可能有用.files/bottom_line.gif border=0>
<TBODY>
<TR>
<TD height=5></TD></TR>
<TR>
<TD align=middle><FONT face=Verdana, size=2 sans-serif Helvetica,
Arial,><IMG src="可以看看,尤其最后幾行可能有用.files/0.gif"><IMG
src="可以看看,尤其最后幾行可能有用.files/0.gif"><IMG
src="可以看看,尤其最后幾行可能有用.files/6.gif"><IMG
src="可以看看,尤其最后幾行可能有用.files/0.gif"><IMG
src="可以看看,尤其最后幾行可能有用.files/4.gif"><IMG
src="可以看看,尤其最后幾行可能有用.files/4.gif"><IMG src="可以看看,尤其最后幾行可能有用.files/9.gif">
</FONT></TD></TR>
<TR>
<TD align=middle><FONT face=Verdana, size=2 sans-serif helvetica,
arial,>花君工作室 Email:<A href="mailto:vctop@vctop.com">vctop@vctop.com</A>
QQ:3406783 </FONT></TD></TR>
<TR>
<TD align=middle><FONT face=Verdana, size=2 sans-serif helvetica,
arial,>CopyRight© 2003-2004 <B><FONT color=#ff0000>VcTop.com</FONT></B>™
All Rights Reserved</FONT></TD></TR></TBODY></TABLE></BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -