最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2014年01月15日 10:27:46   作者:  
這篇文章主要介紹了使用c#同步兩個(gè)子目錄文件的方法,大家參考使用吧

復(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) //在查找有無源目錄存在而在目標(biāo)目錄中不存在的目錄
            {
                if(!DDirInfo.ContainsKey(kvp.Key)) //如果目標(biāo)目錄中不存在目錄,則馬上建立
                {
                    string dirname=destdir + "\\" + kvp.Key;
                    Directory.CreateDirectory(dirname);
                    AddLog("  創(chuàng)建目錄:" + dirname);

                    CreateDirCount++;
                }
                //遞歸調(diào)用目錄同步函數(shù),實(shí)現(xiàn)嵌套目錄一次性全同步
                StartSync(sourcedir + "\\" + kvp.Key, destdir + "\\" + kvp.Key);
            }
            //取得源目錄下所有文件的列表
            string[] SFiles = Directory.GetFiles(sourcedir);
            //string[] DFiles = Directory.GetFiles(destdir);
            //------比較兩目錄中的文件信息(本層目錄)--------------
            foreach (string sfilename in SFiles)
            {
                string dfilename = destdir+"\\"+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)的一些差異,對于修改時(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;
        }
    }
}

相關(guān)文章

  • C#數(shù)據(jù)庫操作的示例詳解

    C#數(shù)據(jù)庫操作的示例詳解

    這篇文章主要通過一些示例為大家詳細(xì)介紹了C#中數(shù)據(jù)庫操作用法,文中的示例代碼講解詳細(xì),具有有一定的借鑒價(jià)值,需要的可以參考一下
    2022-07-07
  • C#創(chuàng)建、部署、調(diào)用WebService圖文實(shí)例詳解

    C#創(chuàng)建、部署、調(diào)用WebService圖文實(shí)例詳解

    本文主要用詳細(xì)的圖文給大家介紹C#創(chuàng)建、部署、調(diào)用WebService的全部過程以及中間需要避免的問題。
    2017-11-11
  • 基于WinForm+Halcon實(shí)現(xiàn)圖像縮放與交互功能

    基于WinForm+Halcon實(shí)現(xiàn)圖像縮放與交互功能

    本文主要講述在 WinForm 中結(jié)合 Halcon 實(shí)現(xiàn)圖像縮放、平移及實(shí)時(shí)顯示灰度值等交互功能,包括初始化窗口的不同方式,以及通過特定事件添加相應(yīng)功能的詳細(xì)步驟和代碼示例,能提升圖像處理應(yīng)用的開發(fā)效率和用戶體驗(yàn),需要的朋友可以參考下
    2025-01-01
  • C# TSC打印二維碼和條形碼的實(shí)現(xiàn)方法

    C# TSC打印二維碼和條形碼的實(shí)現(xiàn)方法

    下面小編就為大家分享一篇C# TSC打印二維碼和條形碼的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • C#設(shè)計(jì)模式之單例模式

    C#設(shè)計(jì)模式之單例模式

    這篇文章介紹了C#設(shè)計(jì)模式之單例模式,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • C#批量插入數(shù)據(jù)到sqlserver的方法詳解

    C#批量插入數(shù)據(jù)到sqlserver的方法詳解

    這篇文章主要為大家詳細(xì)介紹了C#中四種可以批量插入數(shù)據(jù)到sqlserver的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下
    2025-02-02
  • C#實(shí)現(xiàn)飛行棋源碼

    C#實(shí)現(xiàn)飛行棋源碼

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)飛行棋源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • C#中DataSet,DataTable,DataView的區(qū)別與用法

    C#中DataSet,DataTable,DataView的區(qū)別與用法

    這篇文章介紹了C#中DataSet,DataTable,DataView的區(qū)別與用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • unity3d實(shí)現(xiàn)七天簽到功能

    unity3d實(shí)現(xiàn)七天簽到功能

    這篇文章主要為大家詳細(xì)介紹了unity3d實(shí)現(xiàn)七天簽到功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • c# WPF中自定義加載時(shí)實(shí)現(xiàn)帶動(dòng)畫效果的Form和FormItem

    c# WPF中自定義加載時(shí)實(shí)現(xiàn)帶動(dòng)畫效果的Form和FormItem

    這篇文章主要介紹了c# WPF中自定義加載時(shí)實(shí)現(xiàn)帶動(dòng)畫效果的Form和FormItem,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03

最新評論

红桥区| 呈贡县| 凭祥市| 天长市| 乡城县| 承德县| 海盐县| 丰都县| 彝良县| 什邡市| 菏泽市| 六枝特区| 名山县| 卢龙县| 新和县| 玛纳斯县| 广宗县| 泾源县| 措美县| 雅安市| 新干县| 新和县| 平潭县| 鹿泉市| 渭源县| 庄河市| 富民县| 盐城市| 三都| 花垣县| 永济市| 青神县| 敦化市| 临西县| 黑河市| 九江市| 汝阳县| 左贡县| 兴安县| 六盘水市| 汉沽区|