在軟件設計中,對文件系統的利用往往是必不可少的,它能幫助我們存儲許多比較重要的數據,保存過程數據和備份數據,以備軟件出現不可預知的偶然異常時,恢復測試數據和測試過程使用。
下面結合實例來講述文件相關的一些操作(**完整的實例程序可在我的CSDN資源中下載:[http://download.csdn.net/detail/margin1988/4239839](http://download.csdn.net/detail/margin1988/4239839)**):
(1)創建目錄(文件夾):
?1)方法1:
~~~
CString strDir;
strDir.Format("%sdir1",g_BasePath);
::CreateDirectory(_T(strDir),NULL);
~~~
2)方法2:
~~~
#include <direct.h>
strDir.Format("%sdir2",g_BasePath);
_mkdir(strDir);
~~~
(2)創建及寫文件(不追加模式、追加模式):
1)不追加模式:
~~~
CStdioFile file;
CString str;
str.Format("%sdir1\\data1.txt",g_BasePath);
if (!file.Open(_T(str),CFile::modeCreate | CFile::modeWrite | CFile::typeText))
{
MessageBox(_T("未打開文件"));
}
else
{
for (int i=1;i<11;i++)
{
str.Format("%d-%d\n",i,i*i);
file.WriteString(str);
}
file.Close();
}
~~~
?2)追加模式:
~~~
CStdioFile file;
CString str;
str.Format("%sdir1\\data2.txt",g_BasePath);
if (!file.Open(_T(str),CFile::modeCreate | CFile::modeWrite | CFile::typeText | CFile::modeNoTruncate))
{
MessageBox(_T("未打開文件"));
}
else
{
for (int i=1;i<11;i++)
{
str.Format("%d\n",i);
file.SeekToEnd();//定位至文件末尾
file.WriteString(str);
}
file.Close();
}
~~~
(3)讀文件:
~~~
CStdioFile file;
CString str,str1,str2;
str.Format("%sdir1\\data1.txt",g_BasePath);
if (file.Open(_T(str),CFile::modeRead | CFile::typeText))
{
file.SeekToBegin();//定位到文件開頭
while(file.ReadString(str))//讀取文件中的一行
{
if(AfxExtractSubString(str1,str,0,'-'))//截取字符串
{
if(AfxExtractSubString(str2,str,1,'-'))
{
MessageBox(str1+"的平方="+str2);
}
}
}
file.Close();
}
else
MessageBox(_T("data1.txt文件打開失敗"));
~~~
(4)計算文件行數:
~~~
CStdioFile file;
CString str;
str.Format("%sdir1\\data2.txt",g_BasePath);
int lineNum=0;//統計文件行數的變量
if (file.Open(_T(str),CFile::modeRead | CFile::typeText))
{
file.SeekToBegin();//定位到文件開頭
while (file.ReadString(str)) //讀取文件中的一行
{
lineNum++;
}
file.Close();//關閉文件
str.Format("data2.txt共計%d 行",lineNum);
MessageBox(str);
}
else
MessageBox(_T("data2.txt文件打開失敗"));
~~~
(5)計算目錄下文件個數:
~~~
//SDK方式統計指定目錄下的文件個數
HANDLE hFind;
WIN32_FIND_DATA dataFind;
BOOL bMoreFiles=TRUE;
int iCount=0;//統計文件數的變量
CString str;
str.Format("%sdir1\\",g_BasePath);//str是指定的路徑
hFind=FindFirstFile(str+"*.*",&dataFind);//找到路徑中所有文件
//遍歷路徑中所有文件
while(hFind!=INVALID_HANDLE_VALUE&&bMoreFiles==TRUE)
{
if(dataFind.dwFileAttributes!=FILE_ATTRIBUTE_DIRECTORY)//判斷是否是文件
{
iCount++;
}
bMoreFiles=FindNextFile(hFind,&dataFind);
}
FindClose(hFind);
str.Format("dir1目錄下文件個數共計%d 個",iCount);
MessageBox(str);
~~~
(6)刪除文件:
~~~
CFileFind finder;
CString str;
str.Format("%sdir1\\data1.txt",g_BasePath);
if (finder.FindFile(_T(str)))
{
::DeleteFile(_T(str));
}
~~~
(7)刪除目錄:
??RemoveDirectory和_rmdir兩者都只能刪除空文件夾,若要刪其下有文件的文件夾,需先刪除其下的所有文件,再刪除文件夾。
?1)方法1:
~~~
CString strDir;
strDir.Format("%sdir2",g_BasePath);
::RemoveDirectory(strDir);
~~~
?2)方法2:
~~~
#include <direct.h>
strDir.Format("%sdir1",g_BasePath);
_rmdir(strDir);
~~~
- 前言
- VC++中自定義熱鍵及響應
- CFileDialog文件對話框
- VC++中客戶區保存為BMP圖片
- VC++讀、寫注冊表
- VC++播放音頻文件和音頻數據的方法
- VC++調用Matlab編寫的DLL(混合編程)
- VC++中文件讀、寫和其他相關操作匯總
- VC++獲取系統當前時間
- VC++按鈕控件字體設置
- VC++軟件界面風格簡單美化
- VC++中一些常用的數據類型之間的相互轉化
- VC++中截取字符串的方法
- VC++中vector矢量的使用方法及隨機相關
- VC++中結構體的定義及使用
- VC++中List Control控件的使用方法介紹
- VC++中窗口過程函數及其消息發送、響應機制介紹
- VC++中Ribbon編程架構及SDI架構多視圖切換介紹
- 串口通信基礎知識及VC++實現
- VC++中單個鍵盤按鍵的響應
- VC++中的計時器及多媒體高精度計時器
- VC++編寫DLL導出函數及其調用方法
- VC++對話框(CDialog)的全屏顯示及控件居中顯示
- VC++對話框(CDialog)添加背景圖片
- VC++圖片控件(Picture Control)顯示資源位圖(BMP)、文件位圖(BMP)、其它格式文件圖片(JPG\PNG\BMP)的方法
- VC++對Access數據庫的操作(查詢、插入、更新、刪除等)