龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

C#实现定时任务来实现两个文件夹同步功能

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
这个小程序实现定时任务把A文件夹中的文件与B文件夹中的同步,有兴趣的朋友来看下吧。 程序简介: //目的是后台定时运行文件同步操作 使A文件夹中的文件与B文件夹中的同步 //先将

这个小程序实现定时任务把A文件夹中的文件与B文件夹中的同步,有兴趣的朋友来看下吧。

程序简介:

//目的是后台定时运行文件同步操作 使A文件夹中的文件与B文件夹中的同步
//先将A文件夹中存在而B文件夹中没有的A文件夹中的文件删除
//再直接将B文件夹下的文件全部复制到A文件夹下
//或者将B文件夹中存在A文件夹中没有或比A文件夹中的更新的B文件夹中的文件复制到A文件夹下

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;

namespace ImageManager
{
    public partial class BackgroundWorkerForm : Form
     {
        public BackgroundWorkerForm()
         {
             InitializeComponent();
            //
             timer1.Interval = 10000;
             timer1.Enabled = true;
             CheckForIllegalCrossThreadCalls = false;
         }

        private void button1_Click(object sender, EventArgs e)
         {
            int iFileCount = 0;
             System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(@"F:\Temp\A");
             iFileCount = di.GetFiles().Length;
             MessageBox.Show("A文件夹下 文件的个数" + iFileCount.ToString());
         }

        bool IsComplete = true;
        //目的是后台定时运行文件同步操作 使A文件夹中的文件与B文件夹中的同步
        //先将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:\Temp\A");           
             System.IO.FileInfo[] fiA = diA.GetFiles();           
            //先将A文件夹中存在而B文件夹中没有的A文件夹中的文件删除
            foreach (FileInfo tmpfiA in fiA)
             {
                if (!File.Exists(@"F:\Temp\B\" + tmpfiA.Name))
                 {
                     tmpfiA.Delete();
                    this.label2.Text += "\n A Delete "+tmpfiA.Name;
                 }
             }
            //再直接将B文件夹下的文件全部复制到A文件夹下
             System.IO.DirectoryInfo diB = new System.IO.DirectoryInfo(@"F:\Temp\B");
             System.IO.FileInfo[] fiB = diB.GetFiles();
            //foreach (FileInfo tmpfiB in fiB)
            //{
            //     tmpfiB.CopyTo(@"F:\Temp\A\" + tmpfiB.Name, true);
            //}
            //或者将B文件夹中存在A文件夹中没有或比A文件夹中的更新的B文件夹中的文件复制到A文件夹下
            foreach (FileInfo tmpfiB in fiB)
             {
                if (File.Exists(@"F:\Temp\A\" + tmpfiB.Name))
                 {
                     FileInfo tmp = new System.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 += "\n A Update " + tmpfiB.Name;
                     }
                 }
                else
                 {
                     tmpfiB.CopyTo(@"F:\Temp\A\" + 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();
         }       
     }
}

精彩图集

赞助商链接