//目的是后台定时运行文件同步操作 使A文件夹中的文件与B文件夹中的同步
//先将A文件夹中存在而B文件夹中没有的A文件夹中的文件删除
//再直接将B文件夹下的文件全部复制到A文件夹下
//或者将B文件夹中存在A文件夹中没有或比A文件夹中的更新的B文件夹中的文件复制到A文件夹下
![ContractedBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/0be121fa5b8988fbabbbc526af3b0fc0.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.IO;
namespaceImageManager
{
publicpartialclassBackgroundWorkerForm:Form
{
publicBackgroundWorkerForm()
{
InitializeComponent();
//
timer1.Interval=10000;
timer1.Enabled=true;
CheckForIllegalCrossThreadCalls=false;
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
intiFileCount=0;
System.IO.DirectoryInfodi=newSystem.IO.DirectoryInfo(@"F:\Temp\A");
iFileCount=di.GetFiles().Length;
MessageBox.Show("A文件夹下文件的个数"+iFileCount.ToString());
}
boolIsComplete=true;
//目的是后台定时运行文件同步操作使A文件夹中的文件与B文件夹中的同步
//先将A文件夹中存在而B文件夹中没有的A文件夹中的文件删除
//再直接将B文件夹下的文件全部复制到A文件夹下
//或者将B文件夹中存在A文件夹中没有或比A文件夹中的更新的B文件夹中的文件复制到A文件夹下
privatevoidbackgroundWorker1_DoWork(objectsender,DoWorkEventArgse)
{
IsComplete=false;//本次操作未完成
System.IO.DirectoryInfodiA=newSystem.IO.DirectoryInfo(@"F:\Temp\A");
System.IO.FileInfo[]fiA=diA.GetFiles();
//先将A文件夹中存在而B文件夹中没有的A文件夹中的文件删除
foreach(FileInfotmpfiAinfiA)
{
if(!File.Exists(@"F:\Temp\B\"+tmpfiA.Name))
{
tmpfiA.Delete();
this.label2.Text+="\nADelete"+tmpfiA.Name;
}
}
//再直接将B文件夹下的文件全部复制到A文件夹下
System.IO.DirectoryInfodiB=newSystem.IO.DirectoryInfo(@"F:\Temp\B");
System.IO.FileInfo[]fiB=diB.GetFiles();
//foreach(FileInfotmpfiBinfiB)
//{
//tmpfiB.CopyTo(@"F:\Temp\A\"+tmpfiB.Name,true);
//}
//或者将B文件夹中存在A文件夹中没有或比A文件夹中的更新的B文件夹中的文件复制到A文件夹下
foreach(FileInfotmpfiBinfiB)
{
if(File.Exists(@"F:\Temp\A\"+tmpfiB.Name))
{
FileInfotmp=newSystem.IO.FileInfo(@"F:\Temp\A\"+tmpfiB.Name);
if(tmpfiB.LastWriteTime.CompareTo(tmp.LastWriteTime)!=0)
{
tmpfiB.CopyTo(@"F:\Temp\A\"+tmpfiB.Name,true);
this.label2.Text+="\nAUpdate"+tmpfiB.Name;
}
}
else
{
tmpfiB.CopyTo(@"F:\Temp\A\"+tmpfiB.Name,true);
this.label2.Text+="\nACopy"+tmpfiB.Name;
}
}
IsComplete=true;//本次操作已完成可进行下次操作
}
privatevoidtimer1_Tick(objectsender,EventArgse)
{
if(IsComplete)
{
this.backgroundWorker1.RunWorkerAsync();
}
this.label1.Text=DateTime.Now.ToString();
}
}
}