본문 바로가기
C++ 200제/코딩 IT 정보

[MFC Win32 강좌] 폴더 파일 함수 PathFindFileName 등 15개 설명

by vicddory 2018. 10. 17.

[MFC강좌] 폴더 파일 경로 2. PathFindFileName 등 15개 함수 


LPTSTR PathFindFileName( LPCTSTR pPath );

파일 경로에서 『파일 이름』을 찾아준다. pPath에서 이름이 시작되는 위치를 반환.


LPTSTR PathFindNextComponent( LPCTSTR pszPath );

다음 위치의 경로를 찾아준다. 어떤 경로에 대해 순차 접근이 필요하다면 사용해볼 법하다.


  • PathFindNextComponent( "c:\windows\system32" ) = windows\system32
  • PathFindNextComponent( "windows\system32") = system32



[MFC강좌] 폴더 파일 경로 2. PathFindFileName 등 15개 함수



BOOL PathFindOnPath( LPTSTR pszFile, LPCTSTR *ppszOtherDirs );

파일을 검색한다. 만약 검색에 성공하면 pszFile에는 해당 파일의 전체 경로가 담겨서 반환된다.

ppszOtherDirs가 NULL이라면 windows 기본 경로(system32, 환경 변수 path의 값 등)에서 파일을 검색한다.


  • 주의 : 여러 개의 파일이 존재하더라도, 첫 번째로 검색된 파일의 경로만 반환한다.

PCTSTR PathFindSuffixArray(LPCTSTR pszPath, const LPCTSTR *apszSuffix, int iArraySize );

PathFindOnPath와 유사하다. 다만, apszSuffix를 통해 검색할 경로를 여러 개 지정할 수 있다. (기본경로 검색은 하지 않음)


  • 주의 : 대소문자를 구분한다.


LPTSTR PathGetArgs( LPCTSTR pszPath );

경로에 포함된 매개변수(argv)를 찾아준다.


  • PathGetArgs("c:\test.exe temp.txt /x") = "temp.txt /x"


UINT PathGetCharType( TUCHAR ch );

문자가 경로 문자열에 사용되면 어떤 의미인지 알려준다. 경로에 포함될 수 있는 문자인가? 경로 구분자('\')인가? 등등..

이 함수를 이용해서 경로에 사용할 수 있는 문자열인지를 검사할 수 있다.



MFC강좌 파일 폴더 경로



int PathGetDriveNumber( LPCTSTR lpsz );

제시된 경로에 포함된 드라이브 문자(c:\)의 식별 번호를 반환한다.


BOOL PathIsContentType( LPCTSTR pszPath, LPCTSTR pszContentType );

제시된 파일 경로가(확장자만 넘겨줘도 됨) 등록된 contents type과 일치하는지 검사한다.


  • PathIsContentType( "c:\temp.txt", "text/plain" ) = TRUE


BOOL PathIsDirectory( LPCTSTR pszPath );

『실제로 존재』하는 폴더인지 확인한다.


BOOL PathIsDirectoryEmpty( LPCTSTR pszPath );

비어있는(안에 파일이나 서브 폴더가 없는) 폴더인지 확인한다.


BOOL PathIsFileSpec( LPCTSTR lpszPath );

제시된 경로가 파일명만으로 구성되어 있는지 조사한다. 

정확히 말하자면, 경로를 구성하는데 사용되는 문자가 포함되어 있으면 FALSE가 반환된다.


  • 주의 : 파일명으로 사용할 수 없는 문자(/, :, * 등)가 들어있는가? 를 검사하는 함수가 아니다!!



파일 폴더 경로 MFC강좌



BOOL PathIsHTMLFile( LPCTSTR pszFile );

제시된 경로의 확장자가 HTML 유형인가를 검사한다.

한마디로, 레지스트리에 등록된 content type이 text/html이라면 TRUE. (.htm, .html, .xhtml ...)


BOOL PathIsLFNFileSpec( LPCTSTR pszName );

제시된 경로가 『Long File Name spec』에 적합한지 검사한다. (아마 쓸 일은 거의 없을듯싶다 -_-;)


BOOL PathIsNetworkPath( LPCTSTR pszPath );

경로가 네트워크 경로라면 TRUE. 단, 실제로 존재하는 네트워크 경로인가는 다른 얘기다!


BOOL PathIsPrefix( IN LPCTSTR pszPrefix, IN LPCTSTR pszPath );

경로가 pszPrefix로 시작되는가를 검사한다. 같은 드라이브에 있는 파일인지 검사할 때 유용하다.


BOOL PathIsRelative( LPCTSTR lpszPath );

경로가 상대경로인지 검사한다.


  • 주의 : 파일명만 제시된 경우, 상대경로로 인식한다.


 [MFC강좌] 폴더 파일 경로 2. PathFindFileName 등 15개 함수

댓글