2013-07-26 3 views
0

을 지정 작동하지 않는 존재 때 얻을파일 경로가 내가 할 맥, OSX,에

file.getParent() 

ah 

하지만 경우

나는한다

file.exists() 

false가 반환됩니다.

왜?

+3

파일의 정식 경로를 인쇄 수행하여 존재하는 경우

가 또한 확인할 수 있습니다. 나는 그것이 당신이 생각한 곳을 지적하지 않을 것입니다. –

+0

경로를 인쇄하십시오. 또한 상위 디렉토리가 있지만 파일 자체는 존재하지 않습니다. 의미 폴더 "ah"가 있지만 "myfile.text"는 (적어도 File 클래스가 가리키는 디렉토리에서는) 존재하지 않습니다. –

+0

'File'은 실제 파일 시스템 파일이 아니라 String 경로를 나타냅니다. Java 7의 NIO API는 새로운 클래스'Path'를 사용하여 이에 대해 더 분명합니다. 그것을 사용하는 것을 고려하십시오 –

답변

2

getParent()는 지정된 경로를 구문 분석하고 마지막 섹션 인 aftwr last slash를 제거합니다. 그러나 exist()는 실제 검사를 수행합니다. 나는 실제로이 위치에 yor 파일이 존재하지 않는다고 생각합니다. 현재 디렉토리를 확인하려면 새 File ("."). getAbsolutePath()를 수행하고 그에 따라 경로를 수정하십시오.

0
File file = new File("ah/myfile.text"); 

System.out.println(file.getParent()); 
System.out.println(file.exists()); 

출력 :

ah 
false 

나는 같은 결과를 얻을. Get 부모는 파일 및/또는 디렉토리가 존재하지 않는 경우에도 경로를 문자열로 구문 분석해야합니다.

+0

HTML, XML과 같은 코드, 입출력 및 구조화 된 문서의 코드 형식을 사용하십시오. 이를 위해 샘플을 선택하고 메시지/편집 양식 위에있는 '{}'버튼을 클릭하십시오. –

+0

앤드류 - 할거야! 도와 주셔서 감사합니다. – JBuenoJr

0

File이 반드시 존재할 필요는 없습니다. 이미 시스템에있는 파일이나 잠재적으로 시스템에있을 수있는 파일에 대한 참조 일 수 있습니다.

당신이 말한 것은 ah/myfile.text에 (잠재적 인) 파일 경로가 있지만 파일이나 상위 디렉토리가 아직 존재하지 않는다는 것입니다. 그 부모는 여전히 ah/입니다. 부모가 file.getParentFile().exists();