我使用以下代码将文件从一个文件夹复制到另一个文件夹......
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
但是文件已经存在于目标文件夹中,它会抛出错误...任何人都可以帮我替换代码吗??我的意思是我希望用新文件替换该文件。
答案 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)
答案 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,这样可以更容易阅读