c#示例-資料夾增量同步備份?

c#實現資料夾增量同步備份的示例,目前只實現了檔案的增加的同步備份,具體內容見詳細程式碼。

c#示例-資料夾增量同步備份

示例-資料夾增量同步備份#

工具/原料

vs2008

方法/步驟

新建名稱為“資料夾增量備份”的專案,預設專案存在一個FORM,在這裡我們就直接用這個FORM的介面做主介面。

c#示例-資料夾增量同步備份

示例-資料夾增量同步備份#

調整介面的到合適大小(因內容比較多,這裡就不做演示了),並新增相應控制元件:兩個“label”,兩個“textBox”,三個"button",一個“folderBrowserDialog”,一個“fileSystemWatcher”,並修改相應控制元件的TEXT屬性,修改效果見圖。

c#示例-資料夾增量同步備份

示例-資料夾增量同步備份#

將“fileSystemWatcher”的EnableRaisingEvents屬性設定為FALSE,其它屬性可以為預設,大家也可以根據具體需求做相應修改。

c#示例-資料夾增量同步備份

示例-資料夾增量同步備份#

在這一步,介面部分基本完成,接下來我們開始程式碼部分。首先新增“using System.IO;”引用,因後面需要操作資料夾及檔案,“using System.IO;”為操作資料夾及檔案的.

c#示例-資料夾增量同步備份

示例-資料夾增量同步備份#

增加“備份資料夾”和“目標資料夾”的地址瀏覽程式碼:

//按鈕一程式碼

if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)

{

textBox1.Text = folderBrowserDialog1.SelectedPath;

}

//按鈕2程式碼

if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)

{

textBox2.Text = folderBrowserDialog1.SelectedPath;

}

程式碼大概意思為通過“folderBrowserDialog”控制元件,選擇路徑並賦值給對應的“textBox”控制元件。

c#示例-資料夾增量同步備份

示例-資料夾增量同步備份#

開啟監控及提示開啟成功提示原始碼:

fileSystemWatcher1.Path = textBox1.Text.Trim();

fileSystemWatcher1.EnableRaisingEvents = true;

MessageBox.Show("開啟監控成功");

程式碼說明:指定監控目錄,開啟監控,彈出提示窗體表示開啟成功。

c#示例-資料夾增量同步備份

示例-資料夾增量同步備份#

增加檔案複製的方法,具體程式碼如下:

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();

}

}

複製檔案的具體說明,在這裡就不做描述了,大家關注下一篇關於檔案複製的詳細方法文章吧!

c#示例-資料夾增量同步備份

示例-資料夾增量同步備份#

在“fileSystemWatcher”的增刪改查狀態變化中增加資料夾複製備份的方法呼叫,

CopyDirectory(textBox1.Text.Trim(), textBox2.Text.Trim());

c#示例-資料夾增量同步備份

示例-資料夾增量同步備份#

點選測試按鈕,執行程式,執行後效果見圖.

c#示例-資料夾增量同步備份

示例-資料夾增量同步備份#

注意事項

如果需要更換檔案複製的方法,複製方法必須是覆蓋複製,否則會備份出錯或者備份不成功!

相關問題答案