簡體   English   中英

使用目錄結構備份C#文件

[英]C# file backup using directory structure

我的位置類似: C:\\Backups

我有多個位置,例如:

C:\Users\Peter\Books
C:\ProgramData\Library
C:\Tests\Testing\Tester\

如何將每個位置中的所有內容都復制到備份位置,以便如果將備份位置文件夾中的所有內容都放到C:中,它將用備份覆蓋那里的所有文件? 基本上,我如何創建整個備份結構。

至今:

public void Init()
{      
    _locationsToBackup = new List<string>();

    DataSet dataSet = _settings.Pull();// dataset is set here
    DataTable settingsTable = dataSet.Tables[0];


    int valueIndex = 0;
    foreach (DataColumn coll in settingsTable.Columns)
    {
        if (coll.ColumnName == "Value")
        {
            break;
        }
        valueIndex++;
    }


    foreach (DataRow row in settingsTable.Rows)
    {
        int start = 0;
        foreach (DataColumn col in settingsTable.Columns)
        {
            if (col.ColumnName == "SettingType")
            {
                string settingRowValue = row.ItemArray[start].ToString();
                int settingType = Convert.ToInt32(settingRowValue);
                if (settingType == 3)
                {
                    String location = row.ItemArray[valueIndex].ToString();
                    AddNewLocationToBackup(location);
                    break;

                }

            }
            start++;
        }
    }
}

public void StartBackup()
{
    //make sure backup folder exists in correct location
    // if not then create it.
    if(!Directory.Exists(@"C:\ProgramData\Test\Backups"))
    {
        Directory.CreateDirectory(@"C:\ProgramData\Test\Backups");
    }

    foreach(string currentLocation in LocationsToBackup)
    {
         if (Directory.Exists(currentLocation))
            {
                // copy all files from currentLocation and put into backups
                CopyFilesToDirWithSamePath(currentLocation, @"C:\ProgramData\Test\Backups" + @"\" + currentLocation);
            }
        }
    }
}

public void CopyFilesToDirWithSamePath(string sourceDirInput, string targetDirInput)
{
    string sourceDir = sourceDirInput;
    string targetDir = targetDirInput;
    foreach (var file in Directory.GetFiles(sourceDir))
    {
        File.Copy(file, System.IO.Path.Combine(targetDir, System.IO.Path.GetFileName(file)), true);
    }
}
//Now Create all of the directories
foreach (string dirPath in Directory.GetDirectories(SourcePath, "*", 
    SearchOption.AllDirectories))
    Directory.CreateDirectory(dirPath.Replace(SourcePath, DestinationPath));

//Copy all the files & Replaces any files with the same name
foreach (string newPath in Directory.GetFiles(SourcePath, "*.*", 
    SearchOption.AllDirectories))
    File.Copy(newPath, newPath.Replace(SourcePath, DestinationPath), true);

我希望這能幫到您

  private static void DirectoryCopy(string sourceDirName, string destDirName, bool copySubDirs) { // Get the subdirectories for the specified directory. DirectoryInfo dir = new DirectoryInfo(sourceDirName); DirectoryInfo[] dirs = dir.GetDirectories(); if (!dir.Exists) { throw new DirectoryNotFoundException( "Source directory does not exist or could not be found: " + sourceDirName); } // If the destination directory doesn't exist, create it. if (!Directory.Exists(destDirName)) { Directory.CreateDirectory(destDirName); } // Get the files in the directory and copy them to the new location. FileInfo[] files = dir.GetFiles(); foreach (FileInfo file in files) { string temppath = Path.Combine(destDirName, file.Name); file.CopyTo(temppath, false); } // If copying subdirectories, copy them and their contents to new location. if (copySubDirs) { foreach (DirectoryInfo subdir in dirs) { string temppath = Path.Combine(destDirName, subdir.Name); DirectoryCopy(subdir.FullName, temppath, copySubDirs); } } } 

我使用FileSelectionManager庫,請看以下示例: http : //www.fileselectionmanager.com/#Copying%20and%20moving%20files

希望它幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM