《文件之间的同步》由会员分享,可在线阅读,更多相关《文件之间的同步(3页珍藏版)》请在金锄头文库上搜索。
1、这个小程序实现定时任务把 A 文件夹中的文件与 B 文件夹中的同步,有兴趣的朋友来看下 吧。 程序简介: /目的是后台定时运行文件同步操作 使 A 文件夹中的文件与 B 文件夹中的同步 /先将 A 文件夹中存在而 B 文件夹中没有的 A 文件夹中的文件删除 /再直接将 B 文件夹下的文件全部复制到 A 文件夹下 /或者将 B 文件夹中存在 A 文件夹中没有或比 A 文件夹中的更新的 B 文件夹中的文件复制 到 A 文件夹下 using System; using System.Collections.Generic; using System.ComponentModel; using Sys
2、tem.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; namespace ImageManager public partial class BackgroundWorkerForm : Formpublic BackgroundWorkerForm()InitializeComponent();/timer1.Interval = 10000;timer1.Enabled = true;CheckForIllegalCrossThreadCalls = f
3、alse;private void button1_Click(object sender, EventArgs e)int iFileCount = 0;System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(“F:TempA“);iFileCount = di.GetFiles().Length;MessageBox.Show(“A 文件夹下 文件的个数“ + iFileCount.ToString();bool IsComplete = true;/目的是后台定时运行文件同步操作 使 A 文件夹中的文件与 B 文件夹中的同步/先将
4、 A 文件夹中存在而 B 文件夹中没有的 A 文件夹中的文件删除/再直接将 B 文件夹下的文件全部复制到 A 文件夹下/或者将 B 文件夹中存在 A 文件夹中没有或比 A 文件夹中的更新的 B 文件夹中的 文件复制到 A 文件夹下 private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)IsComplete = false;/本次操作未完成System.IO.DirectoryInfo diA = new System.IO.DirectoryInfo(“F:TempA“); System.IO.FileIn
5、fo fiA = diA.GetFiles(); /先将 A 文件夹中存在而 B 文件夹中没有的 A 文件夹中的文件删除foreach (FileInfo tmpfiA in fiA)if (!File.Exists(“F:TempB“ + tmpfiA.Name)tmpfiA.Delete();this.label2.Text += “n A Delete “+tmpfiA.Name;/再直接将 B 文件夹下的文件全部复制到 A 文件夹下System.IO.DirectoryInfo diB = new System.IO.DirectoryInfo(“F:TempB“);System.IO
6、.FileInfo fiB = diB.GetFiles();/foreach (FileInfo tmpfiB in fiB)/ tmpfiB.CopyTo(“F:TempA“ + tmpfiB.Name, true);/或者将 B 文件夹中存在 A 文件夹中没有或比 A 文件夹中的更新的 B 文件夹 中的文件复制到 A 文件夹下 foreach (FileInfo tmpfiB in fiB)if (File.Exists(“F:TempA“ + tmpfiB.Name)FileInfo tmp = new System.IO.FileInfo(“F:TempA“ + tmpfiB.Nam
7、e);if (tmpfiB.LastWriteTime.CompareTo(tmp.LastWriteTime) != 0)tmpfiB.CopyTo(“F:TempA“ + tmpfiB.Name, true);this.label2.Text += “n A Update “ + tmpfiB.Name;elsetmpfiB.CopyTo(“F:TempA“ + tmpfiB.Name, true);this.label2.Text += “n A Copy “ + tmpfiB.Name;IsComplete = true;/本次操作已完成 可进行下次操作private void timer1_Tick(object sender, EventArgs e)if (IsComplete)this.backgroundWorker1.RunWorkerAsync();this.label1.Text = DateTime.Now.ToString();