Path.GetFileNameWithoutExtension

안녕하세요 가입 후 처음으로 인사드리네요
다름이 아니라 test[21.06.29].txt 파일을 만들어서 저장하는데
Path.GetFileNameWithoutExtension을 사용하면 .을 확장자로 인식해서 test[21.06 이렇게 잘려 오더라구요 test[21.06.29].txt로 넣으면 test[21.06.29] 이렇게 제가 원하는대로 나옵니다.
저장할때 확장자를 넣고 저장하는 경우와 파일명만 넣고 저장하는 경우가 있는데 예외처리하기 위해서
GetFileNameWithoutExtension을 사용했는데 파일명만 입력하는경우에 문제가 됩니다.
이런경우 어떻게 접근해서 해결할 수 있을까요?

좋아요 3

Path.HasExtension 사용한다고 해도 .을 확장자로 인식합니다.

좋아요 1

파일 시스템의 확장자가 어떤 특별한 필드로 구분되는 것은 아닙니다. 그냥 파일명에 점이 있으면 마지막 점을 기준으로 그 이후의 것을 확장자라고 부르는 것뿐입니다.

따라서, 파일 시스템 입장에서는 “test[21.06.29].txt” 이름과 “test[21.06.29]” 이름은 그냥 파일명일 뿐이며, 기타 확장자를 구하겠다는 API 등을 사용하면 전자는 “.txt”, 후자는 ".29]"가 확장자가 되는 것입니다.

어쩔 수 없습니다. 특별한 확장자에 대한 예외를 스스로 처리해야 합니다.

좋아요 7

아래처럼 직접 마지막 점을 찾아서 잘라내는 방법밖에 없겠죠.

string fileName = str.Substring(0, str.LastIndexOf(’.’));
string fileExtension = str.Substring(str.LastIndexOf(’.’));

좋아요 1