コード例 #1
0
ファイル: Program.cs プロジェクト: holyman2k/sync
        public void sync(DirectoryInfo source, DirectoryInfo destination)
        {
            Folder folderSource = new Folder(source.FullName);
            Folder folderDestination = new Folder(destination.FullName);

            if (!folderSource.exists())
            {
                Log.log("source folder {0} does not exist", source.FullName);
                return;
            }
            folderSource.sync(folderDestination, comparer);
        }
コード例 #2
0
ファイル: Folder.cs プロジェクト: holyman2k/sync
        public void sync(Folder destination, FileComparer comparer)
        {
            destination.createIfNoneExist();
            destination.refresh();
            DirectoryInfo folder = new DirectoryInfo(path);
            if ((folder.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
            {
                Log.trace("folder {0} is hidden", folder.FullName);
                return;
            }
            folder.Refresh();
            if (!folder.Exists)
            {
                //Console.WriteLine("{0} does not exist", folder.FullName);
                return;
            }
            foreach (FileInfo file in folder.GetFiles())
            {
                if ((file.Attributes & FileAttributes.Hidden)== FileAttributes.Hidden)
                {
                    Log.trace("{0} is hidden", file.FullName);
                    continue;
                }
                FileInfo destFile = destination.findFile(file.Name);
                if (comparer.match(file, destFile))
                {
                    if (CurrentMode.TransferMode == Mode.Normal)
                    {
                        Log.trace("{0} ===> {1} === exist", file.FullName, destFile.FullName);
                    }
                    continue ;
                }
                fileCopy.copy(file, destFile);
            }

            foreach (DirectoryInfo child in folder.GetDirectories())
            {
                string newPath = Path.Combine(destination.path, child.Name);
                Folder childDestination = new Folder(newPath);
                Folder childSource = new Folder(child.FullName);
                childSource.sync(childDestination, comparer);
            }
        }