반응형
완전 복제
스크립트로 파일 또는 폴더 자체를 복제가 필요한 상황이 생겨 작성하게 되었습니다.
스크립트
public static class Utils
{
/// <summary>
/// 폴더 복제 (하위 폴더 및 파일 모두)
/// </summary>
/// <param name="sourceFolderPath"></param>
/// <param name="destinationFolderPath"></param>
public static void CloneFolder(string sourceFolderPath, string destinationFolderPath)
{
if (Directory.Exists(sourceFolderPath))
{
// 폴더 생성
Directory.CreateDirectory(destinationFolderPath);
var files = Directory.GetFiles(sourceFolderPath);
// 파일 복사
foreach (var file in files)
{
string fileName = Path.GetFileName(file);
string destinationFilePath = Path.Combine(destinationFolderPath, fileName);
CloneFile(file, destinationFilePath);
}
// 폴더 복사 (재귀)
var directories = Directory.GetDirectories(sourceFolderPath);
foreach (var directory in directories)
{
string folderName = Path.GetFileName(directory);
string destinationSubFolderPath = Path.Combine(destinationFolderPath, folderName);
CloneFolder(directory, destinationSubFolderPath);
}
AssetDatabase.Refresh();
Debug.Log("Folder copied successfully!");
}
else
{
Debug.LogError("Folder not found at path: " + sourceFolderPath);
}
}
/// <summary>
/// 파일 복제
/// </summary>
/// <param name="sourceFilePath"></param>
/// <param name="destinationFilePath"></param>
public static void CloneFile(string sourceFilePath, string destinationFilePath)
{
if (File.Exists(sourceFilePath))
{
// 파일 생성
File.Copy(sourceFilePath, destinationFilePath, true);
AssetDatabase.Refresh();
Debug.Log("File copied successfully!");
}
else
{
Debug.LogError("File not found at path: " + sourceFilePath);
}
}
}
예제
private static void Main(params string[] args)
{
// 단일 파일 복사
CloneFile(sourceFilePath: $"D:/Folder/Text.txt",
destinationFilePath: $"D:/Folder/Text2.txt");
// 폴더 자체 복사
CloneFolder(sourceFolderPath: $"D:/Folder",
destinationFolderPath: $"D:/Folder2");
}
마무리
유니티 스크립트가 사용되었지만, 불필요하면 해당 부분만 제거하시면 됩니다. .NET Document에서 제시하는 방법도 있으니 참고하시면 좋을 것 같습니다.
참고 : https://learn.microsoft.com/ko-kr/dotnet/standard/io/how-to-copy-directories
반응형
'Utils' 카테고리의 다른 글
Unity, Json 리스트 파일 저장하기 (5) | 2024.07.20 |
---|---|
C#, 클래스 이름을 입력해서 클래스에 접근하기 (0) | 2023.08.05 |
Unity, PlayerPrefs 커스텀 클래스 (오버라이딩) (0) | 2023.06.01 |
Unity, 에셋 FileID 가져오기 (0) | 2023.05.14 |
Unity, 박스 콜라이더 기즈모 (0) | 2023.05.11 |
댓글