使用vb.net更改扩展名和移动文件

时间:2016-11-10 16:07:53

标签: vb.net

我有以下代码,它将txt的扩展名更改为doc,然后移动它(从d:\ 1到d:\ 2)。扩展名成功更改,但它没有移动,我收到错误

  

当该文件已存在时无法创建文件。

请建议。

For Each filePath In Directory.GetFiles("D:\1", "*.txt")
    File.Move(filePath, Path.ChangeExtension(filePath, ".doc"))
Next
Dim filesToMove = From f In New DirectoryInfo("d:\1").EnumerateFiles("*.doc")
For Each f In filesToMove
    f.MoveTo("d:\2")
Next

2 个答案:

答案 0 :(得分:0)

这将检查具有相同名称的现有文件并首先将其删除(您可能希望以不同方式处理此文件)。然后它将在一次调用中移动并重命名为File.Move

Dim directory1 = "D:\1"
Dim directory2 = "D:\2"
For Each oldFileName In Directory.GetFiles(directory1, "*.txt")
    Dim newFileName = Path.ChangeExtension(oldFileName, ".doc").Replace(directory1, directory2)
    If File.Exists(newFileName) Then File.Delete(newFileName)
    File.Move(oldFileName, newFileName)
Next

答案 1 :(得分:0)

好的,终于找到了解决方案。不是很专业,但仍然有效:(非常感谢所有早些时候帮助的成员)

Private Sub logchange(ByVal source As Object, 
                      ByVal e As System.IO.FileSystemEventArgs)
    If e.ChangeType = IO.WatcherChangeTypes.Changed Then

        Dim sourceDirectory As String = "D:\1"
        Dim archiveDirectory As String = "D:\2"
        Try
            Dim jpgFiles = Directory.EnumerateFiles(sourceDirectory, "*.wav")
            For Each currentFile As String In jpgFiles
                Dim fileName = Path.GetFileName(currentFile)
                Directory.Move(currentFile, Path.Combine(archiveDirectory, 
                    Path.GetFileNameWithoutExtension(fileName) & ".doc"))
            Next
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try

    End If

    If e.ChangeType = IO.WatcherChangeTypes.Created Then

        Dim sourceDirectory As String = "D:\1"
        Dim archiveDirectory As String = "D:\2"
        Try
            Dim jpgFiles = Directory.EnumerateFiles(sourceDirectory, "*.wav")
            For Each currentFile As String In jpgFiles
                Dim fileName = Path.GetFileName(currentFile)
                Directory.Move(currentFile, Path.Combine(archiveDirectory, 
                    Path.GetFileNameWithoutExtension(fileName) & ".doc"))
            Next
            Catch ex As Exception
                Console.WriteLine(ex.Message)
        End Try

    End If

End Sub