멍멍은댕댕의 개발공간

유니티 파일/폴더 생성 방법 (C#) 본문

유니티 강좌/유니티 프로그래밍 (C#)

유니티 파일/폴더 생성 방법 (C#)

멍멍은댕댕 2019. 3. 20. 14:01

유니티로 프로그래밍을 할 때, 스크립트 상에서 파일(.txt)이나 폴더를 생성해야 하는 일이 있습니다.

주로 정보를 저장하고 분류하기 위함인데요.

C# 스크립트로 파일이나 폴더를 생성, 삭제하는 방법은 아주 간단합니다.




1
using System.IO;
cs


우선 System.IO를 추가해 줍시다. 이제 파일 생성과 삭제 등 파일 관리와 관련된 함수를 이용할 수 있게 됩니다.




1. 파일 생성하기


1
File.Create(path);
cs


기본적인 형태입니다. path는 파일이 만들어질 경로와 파일의 이름, 파일의 확장자를 포함합니다.


유니티의 경우, 에디터의 플레이 모드 중에 변경된 내용은 플레이 모드를 종료하면 다시 원래대로 돌아가지만, 예외적으로 Resources 폴더에 들어 있는 파일과 폴더는 플레이 모드를 종료하더라도 사라지지 않습니다. 따라서 기본적으로 파일은 "Assets/Resources/" 안에 저장합니다.


"NewFile"이라는 이름의 텍스트 파일을 만들고 싶을 때, 다음과 같이 작성하여 파일을 만들 수 있습니다.


1
File.Create("Assets/Resources/NewFile.txt");
cs




파일의 존재 유무는 다음의 함수로 알 수 있습니다. bool값이 반환됩니다.


1
File.Exists(path);
cs




파일의 삭제는 다음의 함수로 할 수 있습니다.


1
File.Delete(path);
cs






2. 폴더 생성하기


1
Directory.CreateDirectory(path);
cs


기본적인 형태입니다. path는 폴더가 만들어질 경로와 폴더의 이름을 포함합니다.

만들고 싶은 폴더의 이름이 "NewFolder"일 때, 다음과 같이 작성하여 폴더를 만들 수 있습니다.


1
Directory.CreateDirectory("Assets/Resources/NewFolder/");
cs




폴더의 존재 유무는 다음의 함수로 알 수 있습니다. bool값이 반환됩니다.


1
Directory.Exists(path);
cs




폴더의 삭제는 다음의 함수로 할 수 있습니다.


1
Directory.Delete(path);
cs


주의할 점은, 폴더 안에 파일이 남아 있으면 폴더 삭제가 되지 않는다는 점입니다.

따라서 폴더를 제거하려면 안에 들어있는 모든 파일을 삭제해야 하는데요.


1
2
3
4
5
6
7
8
9
string[] allFiles = Directory.GetFiles(path);
for(int i = 0; i< allFiles.Length; i++)
{
     File.Delete(allFiles[i]);
}
 
yield return null;
 
Directory.Delete(path);
cs


이렇게 GetFiles를 이용하여 모든 파일의 이름(경로)를 string[] 형식으로 받아올 수 있습니다.

또 주의할 점은 파일을 모두 삭제했어도 즉시 폴더를 삭제할 수 없다는 점입니다.

이유는 잘 모르겠지만... 한 프레임을 기다려준 후에는 폴더 삭제가 가능했습니다. 그래서 저는 Coroutine을 이용해 yield return null로 한 프레임을 기다려 주었습니다. (코루틴 함수에 대해 모른다면 검색해서 꼭 알아보시길 추천합니다)





감사합니다!