VB.NET版
Imports System.IO
Imports System.IO.Directory
' ======================================================
' 實現一個靜態方法將指定文件夾下面的所有內容copy到目標文件夾下面
' 如果目標文件夾為只讀屬性就會報錯。
' ======================================================
Public Shared Sub CopyDir(ByVal srcPath As String, ByVal aimPath As String)
Try
' 檢查目標目錄是否以目錄分割字符\結束,如果不是則添加之
If aimPath(aimPath.Length - 1) <> Path.DirectorySeparatorChar Then
aimPath += Path.DirectorySeparatorChar
End If
'判斷源目錄是否存在,不存在則退出.
If (Not Directory.Exists(srcPath)) Then Exit Sub
' 判斷目標目錄是否存在如果不存在則新建之
If (Not Directory.Exists(aimPath)) Then Directory.CreateDirectory(aimPath)
' 得到源目錄的文件列表,該里面是包含文件以及目錄路徑的一個數組
' 如果你指向copy目標文件下面的文件而不包含目錄請使用下面的方法
' string[] fileList = Directory.GetFiles(srcPath);
Dim fileList() As String = Directory.GetFileSystemEntries(srcPath)
' 遍歷所有的文件和目錄
For Each FileName As String In fileList
' 先當作目錄處理如果存在這個目錄就遞歸Copy該目錄下面的文件
If Directory.Exists(FileName) Then
CopyDir(FileName, aimPath + Path.GetFileName(FileName))
' 否則直接Copy文件
Else
File.Copy(FileName, aimPath + Path.GetFileName(FileName), True)
End If
Next
Catch ex As Exception
MessageBox.Show(ex.ToString())
End Try
End Sub
' ======================================================
' 實現一個靜態方法將指定文件夾下面的所有內容Detele
' 測試的時候要小心*作,刪除之后無法恢復。
' ======================================================
Public Shared Sub DeleteDir(ByVal aimPath As String)
Try
' 檢查目標目錄是否以目錄分割字符結束如果不是則添加之
If (aimPath(aimPath.Length - 1) <> Path.DirectorySeparatorChar) Then
aimPath += Path.DirectorySeparatorChar
End If
'判斷待刪除的目錄是否存在,不存在則退出.
If (Not Directory.Exists(aimPath)) Then Exit Sub
' 得到源目錄的文件列表,該里面是包含文件以及目錄路徑的一個數組
' 如果你指向Delete目標文件下面的文件而不包含目錄請使用下面的方法
' string[] fileList = Directory.GetFiles(aimPath);
Dim fileList() As String = Directory.GetFileSystemEntries(aimPath)
' 遍歷所有的文件和目錄
For Each FileName As String In fileList
If (Directory.Exists(FileName)) Then
' 先當作目錄處理如果存在這個目錄就遞歸Delete該目錄下面的文件
DeleteDir(aimPath + Path.GetFileName(FileName))
Else
' 否則直接Delete文件
File.Delete(aimPath + Path.GetFileName(FileName))
End If
Next
'刪除文件夾
System.IO.Directory.Delete(aimPath, True)
Catch ex As Exception
MessageBox.Show(ex.ToString())
End Try
End Sub