2015-08-25 21 views
0

如果已經存在,我想在同一位置複製文件,然後將名稱與副本數連接在一起,就像我們在Windows中手動執行一樣。複製文件具有相同名稱但向其中添加副本數量

FileName: - MyPresentation.pptx to Mypresentation - copy 1.pptx

我只找到這段代碼

FileIO.FileSystem.CopyFile(sourceFileName, desFileName) 
IO.File.Copy(sourceFileName, desFileName) 

只允許過度寫入和拋出異常的下副本。

+0

您需要檢查具有該命名模式的文件的目標目錄,然後找出要使用的正確名稱。 – juharr

+0

我想使用自動代碼,就像我們在Windows中做的那樣 –

回答

-1

爲什麼不創建新文件如果文件已經存在並從源讀取內容並將其寫入新文件。

+0

我這樣做在保存每一次保存不想讀取文件 –

0

這裏有一個簡單的解決方案-an算法遍歷每個文件和用戶計數器來命名文件

Dim sourceFileName As String = "C:\Users\itapi\Desktop\2a.png" 
    Dim NewFile As String = "" 
    Dim count As Integer = 1 

    While FileIO.FileSystem.FileExists(sourceFileName) 

     NewFile = sourceFileName + "(" + count.ToString + ")" 


    End While 

    IO.File.Copy(sourceFileName, NewFile) 
+0

如果我刪除文件? –

+0

@KhanEngineer然後它會遍歷更少的文件。仍然應該工作。如果我幫助你,我會接受我的回答:)任何其他問題? – Slashy

+0

不適用於我我需要自動方式,而且您的答案也無效 –

0

我沒有真正意識到關於自動方法,但我已經實現了這樣的事情早,如果你刪除一個文件,這將像Windows一樣工作。可能會有所幫助 -

 string formatingString = " Copy ({0})"; 

     string originalDestinationName = "E:\\MyPresentation.txt"; 
     string sourceFileName = "C:\\Data\\MyPresentation.txt"; 


     int counter = 0; 
     string actualDestinationPath = originalDestinationName; 
     string fileNameWithoutExt = Path.GetFileNameWithoutExtension(originalDestinationName); 
     string actualDestinationDirectory = Path.GetDirectoryName(originalDestinationName); 
     string ext = Path.GetExtension(originalDestinationName); 
     //Check if the file exisits 
     while (File.Exists(actualDestinationPath)) 
     { 
      counter ++; 
      actualDestinationPath = actualDestinationDirectory + fileNameWithoutExt + string.Format(formatingString,counter) + ext; 

     } 
     File.Copy(sourceFileName, actualDestinationPath); 
相關問題