c - Windows에서 파일의 이름이 유효한지 어떻게 확인할 수 있습니까?




winapi path (2)

파일 이름이 유효한지 여부를 나타내는 값을 반환하는 문자열 값을 전달할 수있는 Windows API 함수가 있습니까?

파일 이름이 유효한지 확인해야하며 휠을 다시 발명하지 않으면 쉽게 할 수있는 방법을 찾고 있습니다. 나는 C에서 똑바로 일하지만 Win32 API를 목표로 삼고있다.

그런 기능이 내장되어 있지 않다면 어떻게 내 자신의 글을 쓸 수 있습니까? 파일 이름 유효성을 결정하기 위해 Windows가 따르는 일반적인 알고리즘이나 패턴이 있습니까?


이 함수는 파일 이름에 유효하지 않은 문자 목록을 제공합니다. 파일 이름에 다음이 포함되지 않았는지 확인하십시오 :

public static char[] Path.GetInvalidFileNameChars()

문서는 여기에 있습니다 .

디렉토리 이름의 유효성을 검사하려면 GetInvalidPathChars() 를 사용해야합니다.

편집 : Oooops! 죄송합니다. .NET에있는 줄 알았습니다. 리플렉터를 사용하면 다음과 같은 기능을 사용할 수 있습니다.

'"', '<', '>', '|', 
'\0', '\x0001', '\x0002', '\x0003', '\x0004', '\x0005', '\x0006', 
'\a', '\b', '\t', '\n', '\v', '\f', '\r', 
'\x000e', '\x000f', '\x0010', '\x0011', '\x0012', '\x0013', '\x0014', '\x0015', 
'\x0016', '\x0017', '\x0018', '\x0019', '\x001a', '\x001b', '\x001c', '\x001d', 
'\x001e', '\x001f', 
':', '*', '?', '\\', '/'

또한 prn, con, com1, com2,... , lpt1, lpt2,... 와 같은 예약 된 이름이 있습니다 prn, con, com1, com2,... , lpt1, lpt2,...


파일 이름이 "파일 이름을 이처럼 지정할 수 있습니까?"라는 의미에서 유효한지 확인하는 경우 :

아니, 직접 확인할 수있는 기능이 없습니다. 당신은 자신의 기능을 작성해야합니다.

그러나 유효한 파일 이름이 무엇인지 아는 경우 (올바른 파일 이름에 이제는 다음 중 하나가 포함됩니다 : \ / : * ? " < > | ) 이러한 문제는 없어야합니다.

ctype.h 에서 이러한 함수 중 일부를 사용하여 자신을 도울 수 있습니다 (특정 문자가 특정 문자 클래스에 속하는지 확인할 수 있음).

http://www.cplusplus.com/reference/clibrary/cctype/





filenames