2013-04-24 61 views
0

在程序中打開文件時,對文件進行備份的最有效方式是什麼?這樣當用戶更改並保存文件時,總會有一種方法可以回溯?如何備份完整文件?

例子:

private void open_click(object sender, EventArgs e) 
    { 
     ofd.DefaultExt = ""; 
     if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
     { 
      fileIn = ofd.FileName; 
      fileOut = Path.GetTempFileName(); 
      string encoded = File.ReadAllText(fileIn); 
    etc. etc. etc 
} 

是被裝入程序需要的文件,以獲得備份爲backup_01並放在同一文件夾中的原始文件。當backup_01存在時,備份爲backup_02,等等)。

示例非常值得歡迎!

+0

'File.Exists'和'File.Copy'通常適合我。 – 2013-04-24 10:41:50

+0

什麼樣的文件?大概多大? – richardwiden 2013-04-24 10:42:07

+0

你嘗試了什麼?您對解決方案的描述聽起來不錯。 – nvoigt 2013-04-24 10:43:22

回答

0

我通常會創建一個文件副本,將它放在一個「備份」文件夾中,並對其應用一些命名方案來指示其年齡。

如:folder/originalFile.xyz ==>folder/backup/originalFile_2013-04-14-12-48.bak

更新/馬後炮:我覺得這個效率將取決於執行復制操作的操作系統,但它應該在一般不會太差。除非你有充足的理由這樣做,否則我會避免試圖添加額外的邏輯來更有效地完成它。響應

更新評論

我不會在這裏提供了詳細的實施,但我會盡力爲你指明正確的方向:退房System.IO.File,具體方法CopyExists。 (This list of other common IO-taks也可能有用)

有了這些,你應該能夠檢查一個文件是否存在(例如,如果你的備份文件夾中已經有「backup_1.xyz」),並且基於此,生成一個新名稱爲您的下一個備份文件。

創建一個循環,用增加的數字替換1,直到找到「空閒」文件名,然後將原始文件複製到具有該名稱的新文件。

祝你好運! :)

+0

你能舉一個例子說明如何用backup_01,backup_02等來做到這一點嗎?順便把它放在一個特殊的備份文件夾中是一個好主意。 – 2013-04-24 10:58:09

+0

更新了我的答案 - 沒有代碼,但希望有一些有用的指針。 – Kjartan 2013-04-24 11:09:22