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

[MFC강좌] 폴더 파일 경로 1. PathFileExists 등 12개 함수

by vicddory 2018. 5. 11.

[MFC강좌] 파일 경로 1. PathFileExists 등 12개 함수


PathFileExists 등 12개 함수


LPTSTR PathAddBackslash( LPTSTR lpszPath );

경로 문자열의 맨 뒤에 '\'를 붙여준다.

만약 이미 '\'문자로 종결된 상태라면 아무 일도 하지 않는다. lpszPath는 MAX_PATH 크기(또는 그 이상)이라야 하며, lpszPath에 '\'를 더 붙일 수 없다면 NULL이 반환된다.


BOOL PathAddExtension( LPTSTR pszPath, LPCTSTR pszExtension );

파일 경로(pszPath)의 맨 뒤에 지정된 확장자를 붙여준다.

만약 pszPath가 이미 확장자가 포함된 파일 경로라면 아무 일도 하지 않는다. pszExtension이 NULL이라면 기본적으로 ".exe"가 붙는다.

BOOL PathAppend( LPTSTR pszPath, LPCTSTR pszMore );

두 개의 경로 문자열 결합. pszPath에 pszMore를 붙여준다.

필요하다면 '\' 문자를 사용해 결합한다.


LPTSTR PathBuildRoot( LPTSTR szRoot, int iDrive );

드라이브 식별 번호(iDrive)를 문자열 형(szRoot)으로 변환해 준다.

0 = a:\ 뭐 이런 식이다.


BOOL PathCanonicalize( LPTSTR lpszDst, LPCTSTR lpszSrc );

경로에 상대경로 지정문자 ( "./", "../")가 포함되어 있다면 이를 적절하게 처리해준다.


lpszsrc="c:\\a\\b\\..\\c"

temp_src="c:\\a\\b\\..\\c"라면

lpszDst = "c:\\a\\c"가 된다.


MFC 파일 경로


LPTSTR PathCombine( LPTSTR lpszDest, LPCTSTR lpszDir, LPCTSTR lpszFile );

폴더 경로 + 파일경로로 구성해준다.


lpszDest = lpszDir + lpszFile.


적절하게 '\'를 사용해서 연결해 주며, 상대경로가 포함되어 있다면 이 또한 적절하게 처리해 준다.


int PathCommonPrefix( LPCTSTR pszFile1, LPCTSTR pszFile2, LPTSTR pszPath );


"C:\\", ".", "..", "..\\".


두 경로 pszFile1과 pszFile2에서 어디까지가 공통된 경로인지 조사하고, pszPath에 공통된 부분을 담아준다.

공통된 부분이 없다면 pszPath는 NULL로 설정된다.


BOOL PathCompactPath( HDC hDC, LPTSTR lpszPath, UINT dx );

lpszPath에 포함된 경로 문자열을 dx pixel 크기에 출력하기 적절하게 잘라준다.


C:\path1\path2\sample.txt

C:\path1\...\sample.txt

C:\p...\sample.txt


[MFC강좌] 파일 경로 1. PathFileExists 등 12개 함수


BOOL PathCompactPathEx( LPTSTR pszOut, LPCTSTR pszSrc, UINT cchMax, DWORD dwFlags);

PathCompactPath와 유사하다. 다만, pixel 단위가 아니라 최대 cchMax만큼 잘라낸다.


HRESULT PathCreateFromUrl(LPCTSTR pszUrl, LPTSTR pszPath, LPDWORD pcchPath, DWORD dwReserved );

URL형태로 구성된 경로를 Windows 경로 형식으로 변환해 준다.


file:///c:/test.txt = c:\test.txt.


주의: S_OK가 반환되지 않았다면 pszPath는 아무런 변화도 일어나지 않았다는 소리다!!

또, 실제 URL(Web)이 아니라 Local File Url이라야 한다.


BOOL PathFileExists( LPCTSTR pszPath );

제시된 경로의 파일/폴더가 실제로 존재하는지 검사한다.


LPTSTR PathFindExtension( LPCTSTR pPath );

파일 경로에서 확장자를 찾아준다. (pPath에서 확장자가 시작되는 위치를 반환).

댓글