반응형
임의의 문자열이 유효한 파일 이름인지 확인하는 가장 쉬운 방법
내 응용 프로그램에서 사용자는 파일 이름을 입력 할 수 있습니다. 처리하기 전에 입력 문자열이 Windows Vista에서 유효한 파일 이름인지 확인하고 싶습니다.
그렇게하는 가장 쉬운 방법은 무엇입니까?
유효 함으로 나는 합법적이거나 존재하지 않는 것입니다.
확인 여부 filename.IndexOfAny(Path.GetInvalidFileNameChars()) >= 0
및!File.Exists(Path.Combine(someFolder, filename))
다음에 대해 확인하십시오 GetInvalidFileNameChars()
.
var isValid = !string.IsNullOrEmpty(fileName) &&
fileName.IndexOfAny(Path.GetInvalidFileNameChars()) < 0 &&
!File.Exists(Path.Combine(sourceFolder, fileName));
파일이 생성 될 예정이라면 파일 대화 상자를 사용하여 디렉토리 경로를 지정해야합니다. 파일 이름에 대한 잘못된 문자 목록이 있습니다.
파일 이름이 허용되는지 확인하는 유일한 방법은 시도해 보는 것입니다. 권한은 모욕입니다.
나는 이것을 사용한다 :
public static bool IsValidFileName(string name) {
if(string.IsNullOrWhiteSpace(name)) return false;
if(name.Length > 1 && name[1] == ':') {
if(name.Length < 4 || name.ToLower()[0] < 'a' || name.ToLower()[0] > 'z' || name[2] != '\\') return false;
name = name.Substring(3);
}
if(name.StartsWith("\\\\")) name = name.Substring(1);
if(name.EndsWith("\\") || !name.Trim().Equals(name) || name.Contains("\\\\") ||
name.IndexOfAny(Path.GetInvalidFileNameChars().Where(x=>x!='\\').ToArray()) >= 0) return false;
return true;
}
예약 된 이름, 권한 및 길이 제한을 제외한 모든 것을 처리해야합니다. 이것은 상대 및 절대 파일 이름을 모두 허용합니다.
이것은 단지 아이디어입니다. 예외 목록을 채워야합니다.
public static bool IsValidFilename(string filename)
{
try
{
File.OpenRead(filename).Close();
}
catch (ArgumentException) { return false; }
catch (Exception) { }
return true;
}
반응형
'code' 카테고리의 다른 글
C # Linq Where Date Between 2 Dates (0) | 2020.11.07 |
---|---|
클래스 이름이있는 동적 클래스 정의 (0) | 2020.11.07 |
리베이스 후 변경 사항이 손실 되었습니까? (0) | 2020.11.07 |
바이트 벡터 (u8)를 문자열로 어떻게 변환합니까? (0) | 2020.11.07 |
스크립트를 사용하여 특정 작업 디렉토리가있는 Git Bash 창을 어떻게 시작합니까? (0) | 2020.11.07 |