自已写的同步文件夹(备份文件夹)小程序

自动检测源文件夹与目标文件夹.如果检测到源文件夹中的文件或目录在目标文件夹中不存在则复制一份到目标文件夹.
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 
= "同步还没有开始!";
            }

        }


    }

}

转载于:https://www.cnblogs.com/fanbl/archive/2008/07/05/1236248.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值