在启动时将所有文件和子文件夹从目录 A 复制到目录 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);
}
}
}
我正在尝试在游戏启动时将整个目录(包括所有文件和子文件夹)从一个目的地复制到另一个目的地。我在这里查看了之前提到的脚本: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);
}
}
}