簡體   English   中英

啟動時將目錄 A 中的所有文件和子文件夾復制到 Director B

[英]Copy All Files and Subfolders from Directory A to Director B on Start

我正在嘗試在游戲啟動時將整個目錄(包括所有文件和子文件夾)從一個目的地復制到另一個目的地。 我在這里查看了前面提到的腳本: https://answers.unity.com/questions/1157689/copy-an-entire-directory-to-another-folder-through.html

但是,這似乎不會復制子文件夾和子文件夾內容 - 任何建議都會非常有幫助!

您需要使用遞歸。 基本上,您有一種將文件夾和內容復制到某處的方法。 如果該文件夾包含任何子文件夾,請為每個子文件夾運行相同的方法,然后執行相同的操作。

例子:

static void CopyFolder(string path, string target)
{
    // Create target directory
    Directory.CreateDirectory(target);

    // Copy all files
    foreach (string file in Directory.GetFiles(path))
        File.Copy(file, Path.Combine(target, Path.GetFileName(file)));

    // Recursively copy all subdirectories
    foreach (string directory in Directory.GetDirectories(path))
        CopyFolder(directory, Path.Combine(target, Path.GetFileName(directory)));
}

在該代碼中,它僅遍歷該文件夾中的所有文件。 您可以對所有目錄及其文件及其目錄遵循相同的概念......(提示遞歸)。

以下是獲取文件Directory.EnumerateFiles和目錄Directory.EnumerateDirectories的方法。

嘗試這個

class Program
{
    static void Main(string[] args)
    {
        string sourceDirectory = @"C:\temp\source";
        string targetDirectory = @"C:\temp\destination";

        Copy(sourceDirectory, targetDirectory);

        Console.WriteLine("\r\nEnd of program");
        Console.ReadKey();
    }

    public static void Copy(string sourceDirectory, string targetDirectory)
    {
        var diSource = new DirectoryInfo(sourceDirectory);
        var diTarget = new DirectoryInfo(targetDirectory);

        CopyAll(diSource, diTarget);
    }

    public static void CopyAll(DirectoryInfo source, DirectoryInfo target)
    {
        Directory.CreateDirectory(target.FullName);

        // Copy each file into the new directory.
        foreach (FileInfo fi in source.GetFiles())
        {
            Console.WriteLine(@"Copying {0}\{1}", target.FullName, fi.Name);
            fi.CopyTo(Path.Combine(target.FullName, fi.Name), true);
        }

        // Copy each subdirectory using recursion.
        foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
        {
            DirectoryInfo nextTargetSubDir =
                target.CreateSubdirectory(diSourceSubDir.Name);
            CopyAll(diSourceSubDir, nextTargetSubDir);
        }
    }
}

暫無
暫無

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

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