繁体   English   中英

移动文件夹中的所有文件,但不删除VB .NET中的文件夹

[英]Move all files in folder but not delete folder in VB .NET

我需要知道如何将一个文件夹(例如:C:\\ Folder1)中的所有文件移动到另一个文件夹(例如:C:\\ Folder2),而不是删除Folder1并获取已移动了多少个项目,让我说明;

我需要移动Folder1内的所有项目(文件,文件夹,子文件夹,子文件等),保持目录结构,但不删除Folder1,并且如果可能的话,知道多少个文件夹和多少个文件已移动(仅文件夹数和文件数)。

有人可以帮我吗? 在此先感谢您。

您可以尝试使用此递归过程。

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")

当心,目标文件夹不能在源文件夹内。...(不执行检查)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM