하드 드라이브의 폴더가 있는지 MS VS 2013에 Visula C++ 콘솔 응용 프로그램이 있습니다. 나는 다음과 같은 방법으로 그것을 GetFileAttributes와() 함수를 사용GetFileAttributes() 함수가 폴더에 대한 상대 경로로 작동하지 않습니다.
int _tmain(int argc, _TCHAR* argv[])
{
string folderPath = argv[1];
if (GetFileAttributes(folderPath.c_str()) == FILE_ATTRIBUTE_DIRECTORY)
{
// Do something here
}
else
{
// Also do something here
}
return 0;
}
그러나 GetFileAttributes와의 결과는() 나는 폴더로 (명령 행 인수에) 정규화 된 경로를 설정 한 경우에만 FILE_ATTRIBUTE_DIRECTORY (0x10을)과 같다 . 예 : "M : \ MS_VS2013_Projects \ WordsCounter \ Debug \ TextFiles_to_Test"여기서 "M"은 하드 드라이브 이름입니다. 하지만 (명령 행 인수에) 설정하는 상대 예를 들어 경로하려고하면 (또는 "TextFiles_to_Test \"또는 "\ TextFiles_to_Test."다음 GetFileAttributes와 "TextFiles_to_Test"또는 "TextFiles_to_TestM을") 잘못된 결과를 반환합니다 == 4294967295. 폴더에 대한 상대 경로의 경우 어떻게 올바른 resuli (0x10) 얻을 수 있습니까? 나는 너의 도움에 대해 대단히 감사 할 것이다.
나는이 다음을 수행하는 경우 : ((GetFileAttributes와 (folderPath.c_str())을 0x10) == FILE_ATTRIBUTE_DIRECTORY)가 있기 때문에이 경우은 "만약 문"에 도움이되지 않는 경우에하는 것은도에 만족 존재하지 않는 폴더의 경우. – user3769902
상대 경로는 app 디렉토리가 아닌 현재 작업 디렉토리 또는 드라이브에 대한 상대 경로입니다. 프로세스 당 하나의 CWD가 있지만 Windows는 각 드라이브의 작업 디렉토리를 숨겨진 환경 변수 (예 :'= C :')에 저장합니다. – eryksun