2011-12-29 36 views
0

我使用下面的代碼從一個文件夾複製到另一個文件...File.Replace error..how使用?

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 

但該文件已經存在,它拋出一個錯誤的目標文件夾...任何人可以幫我更換代碼??我的意思是我希望文件被替換爲新的。

回答

3

還有就是Copy方法的重載採用布爾值表示是否應覆蓋:

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

對於它的價值,您可能還需要使用Path.Combine爲路徑結合起來,而不是concating字符串。

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

這具有足夠的智能來插入僅在網絡需要它\(所以你不喜歡foo\\bar路徑結束)的優勢,並可以Concat的使用各種重載多條路徑。

0

如果File.Copy方法沒有像bool Overwrite一個參數,然後使用

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

如果具有

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

存在過載設置覆蓋爲true。在MSDN源最好的描述

here

0

看看這個行..爲什麼system.IO.Path.GetFileName這似乎是報價

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

改變這種

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

或將反斜槓聲明爲常量,這將使其更容易閱讀