??????.Net Framework 提供了幾個(gè)基類(lèi),用于獲取現(xiàn)有文件信息。這些基類(lèi)位于System.IO命名空間中,主要包括以下幾個(gè):
???????????? Directory和File: 這兩個(gè)類(lèi)提供一組靜態(tài)方法,可以通過(guò)它們獲取任意服務(wù)器上可見(jiàn)文件和目錄的信息。
??????????? ?DriveInfo,DirectoryInfo和FileInfo: 這些類(lèi)使用相似的實(shí)例方法和屬性來(lái)獲取同樣的信息
??????這兩組類(lèi)提供相似的方法和屬性。主要差別在于調(diào)用任何方法前必須創(chuàng)建DirectoryInfo或FileInfo對(duì)象,而Directory和File類(lèi)的靜態(tài)方法隨時(shí)都可用。一般而言,Directory和File類(lèi)更適合處理一次性任務(wù)。另一方面,如果你需要獲取若干信息,創(chuàng)建DirectoryInfo和FIleInfo對(duì)象則更好一些,這樣不必在每次調(diào)用方法時(shí)都提供文件或目錄的名稱(chēng)。同時(shí)他們還更快一些,因?yàn)镕ileInfo和DirectoryInfo類(lèi)只執(zhí)行一次安全檢查(僅在你創(chuàng)建對(duì)象實(shí)例時(shí))。Directory和File類(lèi)在每次調(diào)用方法時(shí)都要執(zhí)行安全檢查。
Directory類(lèi)和File類(lèi)
??????Directory類(lèi)和File類(lèi)提供了很多有用的方法(見(jiàn)msdn)
??????Directory和File的方法都非常直觀。例如,可以用下面這段代碼輸出一個(gè)動(dòng)態(tài)列表,顯示當(dāng)前目錄中的每個(gè)文件名稱(chēng)。
???????
??????上例中包含文件路徑C:Temp的字符串前面跟著一個(gè)@字符。它告訴c#完全按照你寫(xiě)的格式解釋字符串。沒(méi)有這個(gè)字符的話(huà),c#會(huì)認(rèn)為是從目錄分隔符“\”開(kāi)始一個(gè)特殊字符序列。另一個(gè)辦法是使用轉(zhuǎn)義字符序列"\\",C#把它解釋為單個(gè)斜杠。所以,應(yīng)該把路徑寫(xiě)作"C:\\Temp".
??????因?yàn)樗^的文件列表只是普通的字符串列表,它可以很方便地綁定到列表控件上,這樣就可以用如下更高效的語(yǔ)法在頁(yè)面上顯示它們了:
??????
PS:要讓這段代碼正常運(yùn)行,用于運(yùn)行ASP.NET工作進(jìn)程的賬號(hào)必須有訪問(wèn)所使用的目錄權(quán)限,否則,web頁(yè)面試圖訪問(wèn)文件系統(tǒng)時(shí)會(huì)拋出一個(gè)SecurityException異常。你可以右擊修改目錄許可,選擇"屬性"---"安全"標(biāo)簽。
??????如果使用的是IIS5的默認(rèn)ASP.NET設(shè)置,你可以為ASP.NET賬號(hào)賦予讀寫(xiě)權(quán)限;如果是IIS6,需要給IIS_WPG組賦予許可;對(duì)于IIS7,需要給IIS_USRS組賦予許可。另外,你可以修改ASP.NET使用的賬號(hào)。
???????????? Directory和File: 這兩個(gè)類(lèi)提供一組靜態(tài)方法,可以通過(guò)它們獲取任意服務(wù)器上可見(jiàn)文件和目錄的信息。
??????????? ?DriveInfo,DirectoryInfo和FileInfo: 這些類(lèi)使用相似的實(shí)例方法和屬性來(lái)獲取同樣的信息
??????這兩組類(lèi)提供相似的方法和屬性。主要差別在于調(diào)用任何方法前必須創(chuàng)建DirectoryInfo或FileInfo對(duì)象,而Directory和File類(lèi)的靜態(tài)方法隨時(shí)都可用。一般而言,Directory和File類(lèi)更適合處理一次性任務(wù)。另一方面,如果你需要獲取若干信息,創(chuàng)建DirectoryInfo和FIleInfo對(duì)象則更好一些,這樣不必在每次調(diào)用方法時(shí)都提供文件或目錄的名稱(chēng)。同時(shí)他們還更快一些,因?yàn)镕ileInfo和DirectoryInfo類(lèi)只執(zhí)行一次安全檢查(僅在你創(chuàng)建對(duì)象實(shí)例時(shí))。Directory和File類(lèi)在每次調(diào)用方法時(shí)都要執(zhí)行安全檢查。
Directory類(lèi)和File類(lèi)
??????Directory類(lèi)和File類(lèi)提供了很多有用的方法(見(jiàn)msdn)
??????Directory和File的方法都非常直觀。例如,可以用下面這段代碼輸出一個(gè)動(dòng)態(tài)列表,顯示當(dāng)前目錄中的每個(gè)文件名稱(chēng)。
???????
????
string
?directoryName?
=
?
@"
C:\Temp
"
;
???? string []?fileList? = ?Directory.GetFiles(directoryName);
???? foreach ( string ?file? in ?fileList)
????{
????????lstFiles.Items.Add(file);
????}
???? string []?fileList? = ?Directory.GetFiles(directoryName);
???? foreach ( string ?file? in ?fileList)
????{
????????lstFiles.Items.Add(file);
????}
??????上例中包含文件路徑C:Temp的字符串前面跟著一個(gè)@字符。它告訴c#完全按照你寫(xiě)的格式解釋字符串。沒(méi)有這個(gè)字符的話(huà),c#會(huì)認(rèn)為是從目錄分隔符“\”開(kāi)始一個(gè)特殊字符序列。另一個(gè)辦法是使用轉(zhuǎn)義字符序列"\\",C#把它解釋為單個(gè)斜杠。所以,應(yīng)該把路徑寫(xiě)作"C:\\Temp".
??????因?yàn)樗^的文件列表只是普通的字符串列表,它可以很方便地綁定到列表控件上,這樣就可以用如下更高效的語(yǔ)法在頁(yè)面上顯示它們了:
??????
string
?dirctoryName?
=
?
@"
C:\Temp
"
;
lstFiles.DataSource? = ?Direcory.GetFiles(dirctoryName);
lstFiles.DataBind();
lstFiles.DataSource? = ?Direcory.GetFiles(dirctoryName);
lstFiles.DataBind();
PS:要讓這段代碼正常運(yùn)行,用于運(yùn)行ASP.NET工作進(jìn)程的賬號(hào)必須有訪問(wèn)所使用的目錄權(quán)限,否則,web頁(yè)面試圖訪問(wèn)文件系統(tǒng)時(shí)會(huì)拋出一個(gè)SecurityException異常。你可以右擊修改目錄許可,選擇"屬性"---"安全"標(biāo)簽。
??????如果使用的是IIS5的默認(rèn)ASP.NET設(shè)置,你可以為ASP.NET賬號(hào)賦予讀寫(xiě)權(quán)限;如果是IIS6,需要給IIS_WPG組賦予許可;對(duì)于IIS7,需要給IIS_USRS組賦予許可。另外,你可以修改ASP.NET使用的賬號(hào)。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

