技术开发 频道

同步文件夹(备份文件夹)小程序


【IT168技术文档】

  自动检测源文件夹与目标文件夹.如果检测到源文件夹中的文件或目录在目标文件夹中不存在则复制一份到目标文件夹.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Threading; namespace WindowsApplication1 { public partial class Form1 : Form { private string soureRoot = ""; private string targetRoot = ""; private Thread th; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { if (chkDrectory(textBox2.Text, textBox1.Text)) { soureRoot = textBox2.Text; targetRoot = textBox1.Text; ThreadStart thstart = new ThreadStart(tbDirectory); th = new Thread(thstart); th.Name = "tbdirectory"; th.Start(); } else { MessageBox.Show("文件夹选择错误!"); } } private bool chkDrectory(string dir1,string dir2) { if (dir1 == string.Empty) { return false; } else if (dir2 == string.Empty) { return false; } else if (dir1 == dir2) { return false; } else { return true; } } private void button2_Click(object sender, EventArgs e) { if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { textBox2.Text = folderBrowserDialog1.SelectedPath; } } private void button3_Click(object sender, EventArgs e) { if (folderBrowserDialog2.ShowDialog() == DialogResult.OK) { textBox1.Text = folderBrowserDialog2.SelectedPath; } } private void tbDirectory() { label3.Text = "同步开始,请等待!"; GetAllDirList(textBox2.Text); label3.Text = "完成!"; } public void GetAllDirList(string strBaseDir) { DirectoryInfo di = new DirectoryInfo(strBaseDir);//获得目录信息 DirectoryInfo[] diA = di.GetDirectories();//获得该目录下的所有子目录 FileInfo[] fiA = di.GetFiles();//获得该目录下的所有文件 string targetDir = di.FullName.Replace(soureRoot, targetRoot) + "\\"; for (int j = 0; j < fiA.Length; j++) { label3.Text = "正在检查" + fiA[j].FullName; if (!File.Exists(targetDir + fiA[j].Name)) { label3.Text = "正在更新" + targetDir + fiA[j].Name; fiA[j].CopyTo(targetDir + fiA[j].Name); } } foreach (DirectoryInfo d in diA) { label3.Text = "正在检查" + d.FullName; targetDir = d.FullName.Replace(soureRoot, targetRoot); if (!Directory.Exists(targetDir)) { label3.Text = "正在更新" + targetDir; Directory.CreateDirectory(targetDir); } } //子目录递归 for (int i = 0; i < diA.Length; i++) { GetAllDirList(diA[i].FullName); } } private void button4_Click(object sender, EventArgs e) { if (th != null) { th.Abort(); label3.Text = "用户取消!"; } else { label3.Text = "同步还没有开始!"; } } } }
0
相关文章