File.Replace error..how如何使用?

时间:2011-12-29 17:45:46

标签: vb.net

我使用以下代码将文件从一个文件夹复制到另一个文件夹......

Public Shared Sub CopyFlashScriptFile(ByVal SourceDirectory As String, ByVal DestinationDirectory As String)
        Try
            Dim f() As String = Directory.GetFiles(SourceDirectory)
            For i As Integer = 0 To UBound(f)
                File.Copy(f(i), DestinationDirectory & "\" & System.IO.Path.GetFileName(f(i)))
            Next
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

但是文件已经存在于目标文件夹中,它会抛出错误...任何人都可以帮我替换代码吗??我的意思是我希望用新文件替换该文件。

6 个答案:

答案 0 :(得分:3)

Copy方法有一个重载,它接受一个布尔值,表明它是否应该覆盖:

File.Copy(f(i), DestinationDirectory & "\" & System.IO.Path.GetFileName(f(i)), True)

为了它的价值,您可能还想使用Path.Combine来组合路径而不是连接字符串。

File.Copy(f(i), Path.Combine(DestinationDirectory, System.IO.Path.GetFileName(f(i))), True)

这样做的好处是足够聪明,只有在需要时插入\(所以你不会以foo\\bar之类的路径结束),并且可以连续使用各种重载的多个路径。

答案 1 :(得分:1)

在末尾添加true进行覆盖。 (File.Copy

 File.Copy(f(i), DestinationDirectory & "\" & System.IO.Path.GetFileName(f(i)), True)

答案 2 :(得分:0)

如果File.Copy方法没有bool Overwrite之类的参数,请使用

if(File.Exists(f(1))) 
  File.Delete();

如果有

File.Copy(f(i), DestinationDirectory & "\" & System.IO.Path.GetFileName(f(i)), true);

答案 3 :(得分:0)

http://msdn.microsoft.com/en-us/library/9706cfs5.aspx

使用File.Copy方法(字符串,字符串,布尔值)的重载

其中boolean将表示覆盖

答案 4 :(得分:0)

将Overwrite设置为true会有重载。

MSDN来源here

中最佳描述

答案 5 :(得分:0)

看看这一行..为什么system.IO.Path.GetFileName看起来像是引用

File.Copy(f(i), DestinationDirectory & "\" & System.IO.Path.GetFileName 

更改为

File.Copy(f(i), DestinationDirectory & "\\" & System.IO.Path.GetFileName

或将反斜杠声明为const,这样可以更容易阅读