我需要知道如何将文件夹中的所有文件(例如:C:\ Folder1)移动到另一个文件夹(例如:C:\ Folder2),但不能删除Folder1并获取已移动的项目数,让我解释一下;
我需要移动Folder1中的所有项目(文件,文件夹,子文件夹,子文件等)维护目录结构,但不删除Folder1,如果可能知道有多少文件夹和已移动的文件数量(只有文件夹数和文件数)。
有人可以帮我吗? 先谢谢你。
答案 0 :(得分:1)
您可以尝试使用此递归过程。
Public Shared Function moveDirectoryContent(srcDir As String, destDir As String) as Integer
Dim countFile As Integer = 0
If (Not Directory.Exists(destDir)) Then
Directory.CreateDirectory(destDir)
End If
Dim listFiles() As String = Directory.GetFileSystemEntries(srcDir)
Dim curFile As String
For Each curFile In listFiles
If Directory.Exists(curFile) Then
countFile = countFile + moveDirectoryContent(curFile, Path.Combine(destDir, Path.GetFileName(curFile)))
Else
Dim dstFile = Path.Combine(destDir, Path.GetFileName(curFile))
If File.Exists(dstFile) Then
dstFile = GetUniqueName(dstFile)
End If
File.Copy(curFile, dstFile)
File.Delete(curFile)
countFile = countFile + 1
End If
Next
Return countFile
End Function
Public Shared Function GetUniqueName(srcFile as String) as String
Dim uFile As String = Path.GetFileNameWithoutExtension(srcFile)
Dim ext as String = Path.GetExtension(srcFile)
Dim cnt As Integer = 0
Dim uniqueText = string.Format("_{0}_00", DateTime.ToDay.ToString("yyyy_MM_dd"))
While(File.Exists(uFile + uniqueText + ext))
cnt = cnt + 1
uniqueText = string.Format("_{0}_{1:D2}", DateTime.ToDay.ToString("yyyy_MM_dd"), cnt)
End While
Return Path.GetDirectoryName(srcFile) + "\" + uFile + uniqueText + ext
End Function
以这种方式打电话
numMoved = moveDirectoryContent("C:\temp", "C:\temp2")
请注意,目标文件夹不能位于源文件夹中....(未执行检查)