VC中文件路徑問題

 在VC編程中,文件和路徑問題是很重要的。例如,MFC編程中要我們會使用文件類來打開或保存一個文件;編程中要獲得某一目錄並在該目錄下順序的存儲文件;編程中要指定某一目錄並順序讀取該目錄下的文件等。下面我簡要介紹下編程過程中遇到的目錄操作。

 
     1.使用文件對話框打開或保存文件
     使用文件對話框類CFileDialog。CFileDialog實現了Windows的基本文件對話框。其構造函數原型爲:
     CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL )。
其中第一個參數爲TRUE時,構造一個打開文件對話框對象,爲FALSE時構造一個保存文件對話框對象;參數LPCTSTR lpszFilter爲打開或保存的類型 常用一個字符串傳遞。
     典型的使用方法如下:
     char szPara[] = "*.bmp|*.bmp|*.*|*.*||";
     UpdateData(TRUE);
     //保存對話框 打開
     CFileDialog dlg(FALSE/TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szPara);
//注:第一個參數爲TRUE爲打開,爲FALSE爲保存
     if ( IDOK == dlg.DoModal() )
     {
         m_BmpPath = dlg.GetPathName();
         UpdateData(FALSE);
     }
     注:以上操作僅僅將文件的路徑名傳遞給了參數,具體的打開或保存操作自行完成。

     CFileDialog包含的重要成員函數:
Displays the dialog box and allows the user to make a selection.
Returns the full path of the selected file.
Returns the filename of the selected file.
Returns the file extension of the selected file.
Returns the title of the selected file.
Returns the full path of the next selected file.
Returns the read-only status of the selected file.
Returns the position of the first element of the filename list.
 
      2.獲取路徑並順序存儲文件
      a.得到當前運行程序所在路徑(其實得到的是當前執行程序存放路徑)(考察!!!)
      TCHAR szFilePath[MAX_PATH + 1];
         GetModuleFileName(NULL, szFilePath, MAX_PATH);      
         (_tcsrchr(szFilePath, _T('//')))[1] = 0;
         CString strtemp=szFilePath;
 
 
 
 
函數說明:
GetModuleFileName:The GetModuleFileName function retrieves the full path and filename for the executable file containing the specified module.
   b.得到程序當前工作路徑:(因爲程序在運行過程中,會改變工作路徑)
       char pBuf[MAX_PATH];                                 //存放路徑的變量      
       GetCurrentDirectory(MAX_PATH,pBuf);                   //獲取程序的當前目錄
       strcat(pBuf,"//");
    CString strtemp=pBuf;
 
 
函數說明:
GetCurrentDirectoryThe GetCurrentDirectory function retrieves the current directory for the current process
 
   c.通過路徑得到目錄並自動生成文件名順序存取文件
   例如:CString m_BmpPath中保存當前文件的路徑,我們要得到該文件所在的文件夾路徑也就是目錄。則需進行以下操作:
   int n = m_BmpPath.ReverseFind('//');//查找最右側‘/’的位置
   m_BmpPath = m_BmpPath.Left(n);//截取最右側‘/’左側部分
   m_BmpPath += '//';//添加‘/’
 
   使用int nFrameNo 進行計數並將其作爲文件名,將文件存放在m_BmpPath目錄下,進行以下操作:
   CString strFilePath;//定義文件路徑存放使用的字符串
   for(;;)
   {
       strFileName.Format("%s%d.bmp",strBmpPath,lFrameNo);//動態生成文件名
       //保存文件
   }
   
    d.指定路徑並順序讀取該路徑下的文件
    假定在文件夾D:/File/ 下存放有100幅圖片,圖片命名是有規律的,我們要讀取這些圖片。則需進行以下操作:
    CFileFind finder; //定義CFileFind對象
    CString strName; //保存文件路徑名
    BOOL bIsWorking; //標誌是否找完所有文件
    SetCurrentDirectory("D://File");//設置查找目錄
    bIsWorking = finder.FindFile("*.bmp");//開始一個查找,查找.bmp文件
    for ( ;; )//循環查找 注:FindNextFile()找到最後一個文件時返回0;
    {
      if(bIsWorking)
      {
            bIsWorking = finder.FindNextFile();
            strName = finder.GetFilePath();//文件路徑
            讀取文件;
      }
      else
           break;
  
   }
 
   注:Windows XP環境下 文件系統爲FAT32 時  使用FindFile() FindNextFile()進行文件查找時得到的文件順序是文件的寫入順序。即時間順序。
 
 
TrimLeft方法的意義是:從字符串左邊看起,遇到括號中出現的字符(參數)全部截去,直到出現第一個括號中未出現的字符時停止截除,即使後面又出現了參數中有的字符也不會截去了。TrimLeft方法的意義是:從字符串左邊看起,遇到括號中出現的字符(參數)全部截去,直到出現第一個括號中未出現的字符時停止截除,即使後面又出現了參數中有的字符也不會截去了。
TrimRight方法類似。
去除當前字符串的前導和後綴空格字符TrimLeft()、TrimRight()
Trim()
功能刪除字符串首部和尾部的空格。
語法Trim ( string )
參數string:string類型,指定要刪除首部和尾部空格的字符串返回值String。函數執行成功時返回刪除了string字符串首部和尾部空格的字符串,發生錯誤時返回空字符串("")。如果任何參數的值爲NULL,Trim()函數返回NULL。
發佈了7 篇原創文章 · 獲贊 4 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章