a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁(yè) > 編程 > C# > 正文

c#同步兩個(gè)子目錄文件示例分享 兩個(gè)文件夾同步

2020-01-24 02:53:57
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

復(fù)制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
namespace AutoSync
{
    public class NewDirectory
    {
        public static Dictionary<string,string> GetDirectories(string dirname)
        {
            Dictionary<string, string> dirs = new Dictionary<string, string>();
            string[] strDirs = Directory.GetDirectories(dirname);
            foreach (string str in strDirs)
            {
                string[] result = str.Split('//');
                dirs.Add(result[result.Length-1], result[result.Length-1]);
            }
            return dirs;
        }
    }
}

復(fù)制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;

namespace AutoSync
{
    enum SyncResult
    {
        Success,SourceDirNotExists,DestDirNotExists
    }
    class FloderSync
    {
        public int CreateDirCount = 0;
        public int CopyFileCount = 0;
        public List<string> Log = new List<string>();
        private void AddLog(string logtext)
        {
            if (Log.Count < 1000)
                Log.Add(System.DateTime.Now.ToString() + logtext);
            else if (Log.Count == 1000)
                Log.Add(System.DateTime.Now.ToString() + "  達(dá)到日志上限,不再追加");
        }
        public SyncResult StartSync(string sourcedir, string destdir)
        {
            //傳入目錄名保護(hù)
            sourcedir = sourcedir.Trim();
            destdir = destdir.Trim();
            //保證目錄最后一個(gè)字符不是斜杠
            if (sourcedir[sourcedir.Length - 1] == '//')
                sourcedir = sourcedir.Remove(sourcedir.Length - 1);
            if (destdir[destdir.Length - 1] == '//')
                destdir = destdir.Remove(destdir.Length - 1);
            //判斷目錄是否存在
            if (!Directory.Exists(sourcedir)) return SyncResult.SourceDirNotExists;
            if (!Directory.Exists(destdir)) return SyncResult.DestDirNotExists;

            //獲取源、目的目錄內(nèi)的目錄信息
            Dictionary<string, string> SDirInfo = new Dictionary<string, string>();
            Dictionary<string, string> DDirInfo = new Dictionary<string, string>();
            Dictionary<string, string> aa = new Dictionary<string, string>();
            SDirInfo = NewDirectory.GetDirectories(sourcedir);//獲取源目錄的目錄信息
            DDirInfo = NewDirectory.GetDirectories(destdir);//獲取目標(biāo)目錄的目錄信息
            //
            //      開始同步兩個(gè)目錄,但只先同步源目錄信息
            //------比較兩目錄中的子目錄信息---------------------
            foreach (KeyValuePair<string, string> kvp in SDirInfo) //在查找有無(wú)源目錄存在而在目標(biāo)目錄中不存在的目錄
            {
                if(!DDirInfo.ContainsKey(kvp.Key)) //如果目標(biāo)目錄中不存在目錄,則馬上建立
                {
                    string dirname=destdir + "http://" + kvp.Key;
                    Directory.CreateDirectory(dirname);
                    AddLog("  創(chuàng)建目錄:" + dirname);

                    CreateDirCount++;
                }
                //遞歸調(diào)用目錄同步函數(shù),實(shí)現(xiàn)嵌套目錄一次性全同步
                StartSync(sourcedir + "http://" + kvp.Key, destdir + "http://" + kvp.Key);
            }
            //取得源目錄下所有文件的列表
            string[] SFiles = Directory.GetFiles(sourcedir);
            //string[] DFiles = Directory.GetFiles(destdir);
            //------比較兩目錄中的文件信息(本層目錄)--------------
            foreach (string sfilename in SFiles)
            {
                string dfilename = destdir+"http://"+Path.GetFileName(sfilename);
                if (File.Exists(dfilename)) //如果目的目錄中已經(jīng)存在同名文件,則比較其最后修改時(shí)間,取最新的為準(zhǔn)
                {
                    //取得源、目的目錄中同名文件的文件信息
                    FileInfo sfi = new FileInfo(sfilename);
                    FileInfo dfi = new FileInfo(dfilename);
                    //如果源文件大于目的文件修改時(shí)間5秒以上才拷貝覆蓋過去,主要是考慮到操作系統(tǒng)的一些差異,對(duì)于修改時(shí)間相同而文件大小不同的文件則暫不處理
                    if (sfi.LastWriteTime > dfi.LastWriteTime.AddSeconds(5))
                    {
                        //拷貝源目錄下的同名文件到目的目錄
                        File.Copy(sfilename, dfilename, true);
                        AddLog("  覆蓋文件:" + dfilename);
                        CopyFileCount++;
                    }
                }
                else //如果目的目錄中不存在同名文件,則拷貝過去
                {
                    //拷貝源目錄下的同名文件到目的目錄
                    File.Copy(sfilename, dfilename, true);
                    AddLog("  拷貝文件:" + dfilename);
                    CopyFileCount++;
                }
            }
            return SyncResult.Success;
        }
    }
}

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 日本爱爱网站 | 欧美日韩亚洲视频 | 日韩免费在线视频 | 日韩在线中文字幕 | 男人日女人网站 | 久久久精品亚洲 | 精品一二区 | 久一在线 | 中文字幕三区 | 99精品国产高清一区二区麻豆 | 我爱操| 日本淫片| 色吊丝2288sds中文字幕 | 精品久久久久久久 | 在线看片日韩 | 欧美日韩精品 | 免费在线观看一级毛片 | 成人精品国产免费网站 | 91免费在线| 一级免费片 | 成全视频免费观看在线看黑人 | 蜜桃精品在线观看 | 亚洲精品午夜国产va久久成人 | 久久兔费看a级 | 国产精品视频综合 | 国产精品大全 | 91亚洲日本 | 日韩中文字幕在线观看 | 日本在线观看一区二区三区 | 亚洲高清在线观看 | 成年人在线观看 | 欧美日韩在线不卡 | 国产成人一区二区三区影院在线 | 欧美精品在线观看一区二区 | 免费看男女www网站入口在线 | 超碰人人干 | 欧美天堂在线观看 | 国产高清自拍 | 欧美三级精品 | 色又黄又爽网站www久久 | 欧美一区二区三区视频 |