C#

C# 윈도우 파일명 유효성 체크 및 변경

csn123 2023. 12. 6. 20:33

프로그래밍을 하다보면 파일을 저장시켜야 할때가 있는데, 이때 윈도우에서 제약이 있는 파일명을 사용하면 안된다.

아래 문자는 사용할 수 없다.

문자
이유
\
디렉터리의 구분자로 쓰인다.[1]
/
:
드라이브 기호로 쓰인다.[2]
*
와일드 카드로 쓰인다. ?는 한 글자의 의미로 쓰인다.[3][4]
?
"
경로의 시작과 끝을 나타낸다.[5]
<
리다이렉트, 파이프 등 특수 문법에 쓰인다.
>
|

다행히 닷넷에서는 내장함수로 파일명 유효성 체크를 지원한다. (같은 마이크로소프트니까 가능??)

아래와 같이 체크하여 에러가 나는 불상사를 방지할 수 있다.

 

 

String filename = 파일명;
string invalid = new string(Path.GetInvalidFileNameChars()) + new string(Path.GetInvalidPathChars());

foreach (char c in invalid)
     {
            filename = filename.Replace(c.ToString(), "");
     }