⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 backupthread.cs

📁 这是一款系统系统备份的软件
💻 CS
字号:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.IO;
using BackupSystem.DataLayer;

namespace BackupSystem.LogicLayer
{
    class BackupThread : ThreadStatus
    {
        private EntryList elEntryList;

        public BackupThread(EntryList entryList)
        {
            this.elEntryList = entryList;
            this.threadStart = new ThreadStart(Backup);
        }

        private void Backup()
        {
            try
            {
                int i = 0, n = this.elEntryList.Count;
                foreach (Entry entry in this.elEntryList.Entries)
                {
                    //复制文件或文件夹的文件夹
                    if (File.Exists(entry.OriginalFolder))
                    {
                        //档案文件夹
                        this.FileToFolder(entry.OriginalFolder, entry.TargetFolder);
                    }
                    else
                    {
                        //文件夹文件夹
                        this.FolderToFolder(entry.OriginalFolder, entry.TargetFolder);
                    }
                    //进程信息
                    this.fFilePercentage = (float)(++i) / n;
                    this.strProcessingFile = entry.OriginalFolder;
                }
            }
            catch (ThreadInterruptedException)
            {

            }
            finally
            {
                this.bIsFinished = true;
            }
        }

        /// <summary>
        /// file1复制到file2,并覆盖.
        /// </summary>
        /// <param name="file1"></param>
        /// <param name="file2"></param>
        private void FileToFile(string file1, string file2)
        {
            this.strProcessingFile = file1;
            File.Copy(file1, file2, true);
        }

        private void FileToFolder(string file, string folder)
        {
            if (!Directory.Exists(folder))
                Directory.CreateDirectory(folder);
            this.strProcessingFile = file;
            this.FileToFile(file, folder + "\\" + this.GetFilename(file));
        }

        private void FolderToFolder(string folder1, string folder2)
        {
            if (!Directory.Exists(folder2))
                Directory.CreateDirectory(folder2);
            //复制所有子文件夹
            string[] folders = Directory.GetDirectories(folder1);
            foreach (string str in folders)
            {
                this.FolderToFolder(str, folder2 + "\\" + this.GetFilename(str));
            }
            //复制所有子文件
            string[] files = Directory.GetFiles(folder1);
            foreach (string str in files)
            {
                this.FileToFolder(str, folder2);
            }
        }

        private string GetFilename(string path)
        {
            return path.Substring(path.LastIndexOf('\\') + 1);
        }

    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -