c#實現資料夾增量同步備份的示例,目前只實現了檔案的增加的同步備份,具體內容見詳細程式碼。
示例-資料夾增量同步備份#
工具/原料
vs2008
方法/步驟
新建名稱為“資料夾增量備份”的專案,預設專案存在一個FORM,在這裡我們就直接用這個FORM的介面做主介面。
示例-資料夾增量同步備份#
調整介面的到合適大小(因內容比較多,這裡就不做演示了),並新增相應控制元件:兩個“label”,兩個“textBox”,三個"button",一個“folderBrowserDialog”,一個“fileSystemWatcher”,並修改相應控制元件的TEXT屬性,修改效果見圖。
示例-資料夾增量同步備份#
將“fileSystemWatcher”的EnableRaisingEvents屬性設定為FALSE,其它屬性可以為預設,大家也可以根據具體需求做相應修改。
示例-資料夾增量同步備份#
在這一步,介面部分基本完成,接下來我們開始程式碼部分。首先新增“using System.IO;”引用,因後面需要操作資料夾及檔案,“using System.IO;”為操作資料夾及檔案的.
示例-資料夾增量同步備份#
增加“備份資料夾”和“目標資料夾”的地址瀏覽程式碼:
//按鈕一程式碼
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
textBox1.Text = folderBrowserDialog1.SelectedPath;
}
//按鈕2程式碼
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
textBox2.Text = folderBrowserDialog1.SelectedPath;
}
程式碼大概意思為通過“folderBrowserDialog”控制元件,選擇路徑並賦值給對應的“textBox”控制元件。
示例-資料夾增量同步備份#
開啟監控及提示開啟成功提示原始碼:
fileSystemWatcher1.Path = textBox1.Text.Trim();
fileSystemWatcher1.EnableRaisingEvents = true;
MessageBox.Show("開啟監控成功");
程式碼說明:指定監控目錄,開啟監控,彈出提示窗體表示開啟成功。
示例-資料夾增量同步備份#
增加檔案複製的方法,具體程式碼如下:
public void CopyDirectory(string sourceDirName, string destDirName)
{
try
{
if (!Directory.Exists(destDirName))
{
Directory.CreateDirectory(destDirName);
File.SetAttributes(destDirName, File.GetAttributes(sourceDirName));
}
if (destDirName[destDirName.Length - 1] != Path.DirectorySeparatorChar)
destDirName = destDirName + Path.DirectorySeparatorChar;
string[] files = Directory.GetFiles(sourceDirName);
foreach (string file in files)
{
if (File.Exists(destDirName + Path.GetFileName(file)))
continue;
File.Copy(file, destDirName + Path.GetFileName(file), true);
File.SetAttributes(destDirName + Path.GetFileName(file), FileAttributes.Normal);
}
string[] dirs = Directory.GetDirectories(sourceDirName);
foreach (string dir in dirs)
{
CopyDirectory(dir, destDirName + Path.GetFileName(dir));
}
}
catch (Exception ex)
{
StreamWriter sw = new StreamWriter(Application.StartupPath + "\\log.txt", true);
sw.Write(ex.Message + " " + DateTime.Now + "\r\n");
sw.Close();
}
}
複製檔案的具體說明,在這裡就不做描述了,大家關注下一篇關於檔案複製的詳細方法文章吧!
示例-資料夾增量同步備份#
在“fileSystemWatcher”的增刪改查狀態變化中增加資料夾複製備份的方法呼叫,
CopyDirectory(textBox1.Text.Trim(), textBox2.Text.Trim());
示例-資料夾增量同步備份#
點選測試按鈕,執行程式,執行後效果見圖.
示例-資料夾增量同步備份#
注意事項
如果需要更換檔案複製的方法,複製方法必須是覆蓋複製,否則會備份出錯或者備份不成功!