我們將為大家介紹利用Directory類處理路徑中的目錄部分
該類位於System
IO 命名空間
Directory類為我們提供了訪問目錄的方法
類浏覽
微軟文檔中說 Directory類提供了在目錄和子目錄中進行創建移動和列舉操作的靜態方法此外你還可以訪問和操作各種各樣的目錄屬性例如創建或最後一次修改時間以及Windows訪問控制列表等
Directory類的一個重要方面是它的方法都是靜態的這意味著你可以直接調用它們而不用創建該類的一個實例讓我們從基本的方面開始Directory類之旅包括創建刪除和移動目錄
基本方法
Directory類提供了各種目錄處理的靜態方法這些靜態方法對所有方法都執行安全性檢查我們將會介紹其中的大部分方法第一組有目錄處理的基本方法組成
·CreateDirectory可以用來創建目錄或子目錄同時還可以通過創建屬性建立目錄安全性檢查
·Delete可以用來刪除系統中指定的空目錄如果路徑參數所指定的目錄中包含文件或子目錄該方法將會拋出IOExceptin異常
·Exists可以此方法檢測一個指定的路徑是否存在路徑參數可以指定相對或絕對路徑信息相對路徑信息解釋為相對當前工作目錄
·Move可用該方法移動文件或目錄到一個新位置它有兩個參數移動的文件或目錄以及目的位置
列表A中的C# Windows控制台應用程序使用這些方法來創建移動和刪除目錄整個代碼中還使用了Exists方法來檢查某個目錄是否存在所有對Directory類中方法的調用都封裝在try/catch語句塊中代碼從位於C盤的test目錄開始使用Path類來檢測包含目錄名的字符串中是否有文件擴展名如果包含文件擴展名那麼判斷該字符串為一個文件路徑而不是目錄程序終止否則如果目錄不存在那麼將會創建該目錄接下來重命名目錄為techrepublic最後刪除該目錄(列表B包含了用VBNET實現的相同功能的代碼)
目錄和它們的內容
一旦目錄創建通常我們需要詳細了解它的內容或檢查該目錄Directory類使得通過各種方法和屬性訪問目錄信息和它的內容變得十分簡單下面的列表中列出了這些方法
·GetCurrentDirectory返回應用程序的當前工作目錄
·GetDirectories返回指定目錄的所有子目錄列表並用字符串數組存儲
·GetDirectoryRoot對指定的路徑返回磁盤信息更目錄信息或兩者都有
·GetFiles返回指定目錄范圍內的所有文件名存儲在字符串數組中
·GetFileSystemEntries返回指定哪個目錄范圍內的文件名和目錄並存儲在字符串數組中
·GetParent以字符串值返回指定路徑的父目錄包括絕對路徑和相對路徑
·GetLogicalDrives以<盤符>:的形式返回字符串數組中計算機上的邏輯盤符
列表C中的c#代碼演示了這些方法的使用方法基本上該示例顯示了有關當前應用目錄所有子目錄和文件根目錄和當前系統上的所有邏輯盤符的所有信息列表D包含了用VBNET實現相同功能的代碼
日期和時間戳
通常知道目錄何時創建以及最後一次訪問或修改時間是非常有用的Directory類提供了處理日期和時間戳的方法如下所示
·GetCreationTime獲得目錄創建的日期時間
·GetLastAccessTime返回指定文件或目錄最後一次訪問的日期時間
·GetLastWriteTime返回指定文件或目錄最後一次寫入的日期時間
·SetCreationTime設置指定文件或目錄的創建日期和時間
·SetLastAccessTime設置指定文件或目錄上次訪問日期和時間
·SetLastWriteTime設置上次寫入目錄的日期和時間
列表E中的C#代碼列出了C盤中所有目錄最後一次訪問修改和最初創建的日期和時間並把每個目錄的最後一次訪問時間設置為當前日期和時間列表F包含了VBNET實現的相同功能的代碼
系統的其它方面
文件處理通常要訪問目錄並對其進行相關操作SystemIO命名空間的Directory類提供了創建和處理目錄以及它的內容的所有功能利用它我們確定文件何時被創建和最後一次訪問時間等
而且系統管理員工作的一個重要方面是通過目錄訪問控制對系統資源的訪問下周我們將介紹如何通過Directory類處理目錄安全性問題
列表A
using System;
using SystemCollectionsGeneric;
using SystemText;
using SystemIO;
namespace TRDirectory {
class Program {
static void Main(string[] args) {
string testPath = c:test;
if (PathHasExtension(testPath)) {
ConsoleWriteLine(This is a file path not a directory);
}
else {
if (DirectoryExists(testPath)) {
ConsoleWriteLine(This directory already exists);
}
else {
try {
DirectoryCreateDirectory(testPath);
} catch (IOException ex) {
ConsoleWriteLine(Error creating directory testPath exMessageToString());
} }
if (DirectoryExists(testPath)) {
try {
DirectoryMove(testPath c:techrepublic);
} catch (IOException ex) {
ConsoleWriteLine(Error moving directory testPath exMessageToString());
} }
if (DirectoryExists(c:techrepublic)) {
try {
DirectoryDelete(c:techrepublic true);
} catch (IOException ex) {
ConsoleWriteLine(Error deleting directory c:techrepublic exMessageToString());
} } } } } }
列表B
Imports SystemIO
Module Module
Sub Main()
Dim testPath As String
testPath = c:test
If (PathHasExtension(testPath)) Then
ConsoleWriteLine(This is a file path not a directory)
Else
If (DirectoryExists(testPath)) Then
ConsoleWriteLine(This directory already exists)
Else
Try
DirectoryCreateDirectory(testPath)
Catch ex As IOException
ConsoleWriteLine(Error creating directory testPath exMessageToString())
End Try
If (DirectoryExists(testPath)) Then
Try
DirectoryMove(testPath c:techrepublic)
Catch ex As IOException
ConsoleWriteLine(Error moving directory testPath exMessageToString())
End Try
End If
If (DirectoryExists(c:techrepublic)) Then
Try
DirectoryDelete(c:techrepublic True)
Catch ex As IOException
ConsoleWriteLine(Error deleting directory c:techrepublic exMessageToString())
End Try
End If
End If
End If
End Sub
End Module
列表C
using System;
using SystemCollectionsGeneric;
using SystemText;
using SystemIO;
namespace TRDirectory {
class Program {
static void Main(string[] args) {
string curDir;
inti;
try {
curDir = DirectoryGetCurrentDirectory();
ConsoleWriteLine(Current application directory: + curDir);
subDirs = DirectoryGetDirectories(curDir);
for (i = ; i <= subDirsGetUpperBound(); i++) {
ConsoleWriteLine(Subdirectory: + subDirs[i]);
}
ConsoleWriteLine(Root info: + DirectoryGetDirectoryRoot(DirectoryGetCurrentDirectory()));
for (i = ; i <= DirectoryGetFileSystemEntries(curDir)GetUpperBound(); i++){
ConsoleWriteLine(System entries: + DirectoryGetFileSystemEntries(curDir)[i]);
}
for (i = ; i <= DirectoryGetLogicalDrives()GetUpperBound(); i++) {
ConsoleWriteLine(Logical drives: + DirectoryGetLogicalDrives()[i]);
} } catch (IOException e) {
ConsoleWriteLine(Exception eMessageToString());
} } } }
列表D
using System;
using SystemCollectionsGeneric;
using SystemText;
using SystemIO;
namespace TRDirectory {
class Program {
static void Main(string[] args) {
string[] subDirs;
inti;
DateTimedtCreated;
DateTimedtAccessed;
DateTimedtWrite;
try {
subDirs = DirectoryGetDirectories(c:);
for (i = ; i <= subDirsGetUpperBound(); i++) {
dtCreated = DirectoryGetCreationTime(subDirs[i]);
dtAccessed = DirectoryGetLastAccessTime(subDirs[i]);
dtWrite = DirectoryGetLastWriteTime(subDirs[i]);
ConsoleWriteLine(Subdirectory subDirs[i]);
ConsoleWriteLine(Created: dtCreatedToString());
ConsoleWriteLine(Last accessed: dtAccessedToString());
ConsoleWriteLine(Last changed: dtWriteToString());
DirectorySetLastAccessTime(subDirs[i] DateTimeNow);
} } catch (IOException e) {
ConsoleWriteLine(Exception eMessageToString());
} } } }
列表E
using System;
using SystemCollectionsGeneric;
using SystemText;
using SystemIO;
namespace TRDirectory {
class Program {
static void Main(string[] args) {
string[] subDirs;
inti;
DateTimedtCreated;
DateTimedtAccessed;
DateTimedtWrite;
try {
subDirs = DirectoryGetDirectories(c:);
for (i = ; i <= subDirsGetUpperBound(); i++) {
dtCreated = DirectoryGetCreationTime(subDirs[i]);
dtAccessed = DirectoryGetLastAccessTime(subDirs[i]);
dtWrite = DirectoryGetLastWriteTime(subDirs[i]);
ConsoleWriteLine(Subdirectory subDirs[i]);
ConsoleWriteLine(Created: dtCreatedToString());
ConsoleWriteLine(Last accessed: dtAccessedToString());
ConsoleWriteLine(Last changed: dtWriteToString());
DirectorySetLastAccessTime(subDirs[i] DateTimeNow);
} } catch (IOException e) {
ConsoleWriteLine(Exception eMessageToString());
} } } }
列表F
Imports SystemIO
Module Module
Sub Main()
Dim subDirs() As String
Dim i As Integer
Dim dtCreated As DateTime
Dim dtAccessed As DateTime
Dim dtWrite As DateTime
Try
subDirs = DirectoryGetDirectories(c:)
For i = To subDirsGetUpperBound()
dtCreated = DirectoryGetCreationTime(subDirs(i))
dtAccessed = DirectoryGetLastAccessTime(subDirs(i))
dtWrite = DirectoryGetLastWriteTime(subDirs(i))
ConsoleWriteLine(Subdirectory subDirs(i))
ConsoleWriteLine(Created: dtCreatedToString())
ConsoleWriteLine(Last accessed: dtAccessedToString())
ConsoleWriteLine(Last changed: dtWriteToString())
DirectorySetLastAccessTime(subDirs(i) DateTimeNow)
Next i
Catch e As IOException
ConsoleWriteLine(Exception eMessageToString())
End Try
End Sub
End Module
From:http://tw.wingwit.com/Article/program/net/201311/12562.html