21 4 例項 讀取目錄下指定型別的檔案的內容

2021-06-26 16:58:21 字數 2886 閱讀 8386

21.4  例項:讀取目錄下指定型別的檔案的內容

【例項21-1】 實現了讀取指定目錄下的、指定檔案型別的、所有檔案的內容,並在控制台中顯示讀取的內容。具體實現步驟如下:

(1)開啟visual studio 2008整合開發環境,並建立名稱為"sample_21"的控制台應用程式。該應用程式的版本為.net framework 3.5。

(2)右擊"解決資源方案管理器"面板中的program.cs節點,開啟名稱為"program.cs"的類檔案,並在該檔案中新增readerfile (string path) 方法的程式**。readerfile (string path)方法讀取指定檔案(由path引數指定)的內容,並返回讀取的內容。具體步驟如下:

① 建立型別為string的filedata變數,用來儲存讀取的內容。

② 在try語句中讀取檔案的內容。

③ 建立讀取檔案內容的streamreader類的例項reader,並指定該例項的編碼方式為作業系統的預設編碼方式。

④ 呼叫readtoend()方法從頭至尾讀取檔案的所有內容,並儲存為filedata變數。

⑤ 關閉reader例項。

⑥ 如果try語句發生異常,則在catch語句中丟擲異常。

綜合上述,readerfile(string path)方法的程式**如下。

/// 讀取檔案的內容 

public

static

string readerfile(string path)  

catch(excepti/on ex)  ///丟擲異常

return filedata;  

}

(3)在program.cs檔案中新增readersubdirectory(string path,string filter,ref stringbuilder content)方法的程式**。該方法讀取指定目錄(由path引數指定)下的、滿足過濾器(filter引數指定)的所有檔案的內容,讀取的內容都儲存到content引數(該引數為引用引數)中。具體步驟如下:

① 判斷path引數是否合法。如果不合法,則中止該方法。

② 建立目錄資訊的例項parentdi。

③ 使用foreach語句和getfiles()方法搜尋parentdi例項指定目錄下的、滿足過濾器(filter引數指定)的所有檔案。

④ 如果foreach語句找到檔案,則依次讀取每乙個檔案的內容,並儲存到content引數中。

綜合上述,readersubdirectory(string path,string filter,ref stringbuilder content)方法的程式**如下:

/// 讀取子目錄下的所有檔案的內容 

private

static

void readersubdirectory(string path,string filter,ref

stringbuilder content)  

(4)在program.cs檔案中新增readerdirectory(string path,string filter)方法的程式**。該方法讀取指定目錄(由path引數指定)下的、滿足過濾器(filter引數指定)的所有檔案的內容,並返回讀取的內容。具體步驟如下:

① 判斷path引數是否合法。如果不合法,則中止該方法。

② 建立儲存讀取的內容的stringbuilder類的例項content。

③ 如果filter引數為空,則直接呼叫readersubdirectory(string path,string filter,ref stringbuilder content)方法讀取path引數指定目錄(及其子目錄)下的所有檔案的內容。

④ 如果filter引數不為空,則首先將過濾器轉換為乙個字串陣列filters,然後使用foreach語句處理filters陣列中每乙個型別的檔案,並讀取path目錄(及其子目錄)下的、滿足過濾器的所有檔案的內容。

⑤ 上述讀取檔案的內容,都儲存在content變數中。最後,將該變數轉換為乙個字串,並返回該字串。

綜合上述,readerdirectory(string path,string filter)方法的程式**如下:

/// 讀取指定目錄下的所有檔案 

public

static

string readerdirectory(string path,string filter)  

else

,  stringsplitopti/ons.removeemptyentries);  

///讀取每乙個檔案的內容

foreach(string fi in filters)  

}  return content.tostring();  

}

(5)在program.cs檔案的main(string args)方法中呼叫readerdirectory(string path,string filter)方法讀取"c:\data"目錄下的、字尾名為.cs的所有檔案的內容,並顯示在控制台中。程式**如下:

static

void main(string args)  

(6)在visual studio 2008整合開發環境按下f5鍵,執行sample_21應用程式。控制台顯示的部分結果如下:

using system;  

using system.collecti/ons;  

using system.text;  

using system.i/o;  

using system.windows.forms;  

namespace dorient.fileparse.component  

catch(excepti/on ex)  

}  }  } 

讀取指定目錄下的所有檔案

在開發或者面試的過程中,往往會遇到這樣的需求,就是讀取某個目錄下的所有檔案 內容 並且資料夾的層級不固定。基於這樣的情況,博主寫了個對應的demo,以備不時之需。檔案系統層級關係可以看成是樹形結構,讀取某個目錄下的所有檔案,其實就是遍歷一顆樹,樹的遍歷分為深度優先和廣度優先。對應的,分別寫了兩個小d...

複製指定目錄包括子目錄下的所有指定型別的檔案

將下列 複製到txt文字中。儲存成字尾名為.bat的檔案。然後執行即可。方案 複製指定資料夾下及其所有子資料夾內 字尾名相同的檔案.bat xcopy e d a txt e 2 y xcopy e d a sss e 2 y 註解 此 功能 將d盤a目錄下 包括子目錄 所有字尾為.txt sss的...

Python load指定目錄下指定字尾的檔案

1 指定檔案的路徑 path d python pycharm projects tensorflow dbn master 實際上在windows上的路徑是乙個反斜槓的 d python pycharm projects tensorflow dbn master 要注意的是反斜槓轉義的問題,這裡...