2014-02-05 10 views
0

디렉토리를 가리키는 File 객체가 필요합니다 (존재하지 않을 수도 있음). 어떻게해야합니까?디렉토리의 파일 객체 받기

내가 할 경우에도

File dir = new File("/tmp/something/"); // with trailing slash 

dir.isDirectory() 같은 일이 false입니다. 그런 다음 거짓을 반환하는 dir.mkdir()을 시도한 이유는 무엇입니까? 디렉토리가 존재하지 않아도됩니다. 실제로는 존재하지 않는 디렉토리를 가리키고 싶습니다. (테스트 중입니다.) 이것을 어떻게 할 수 있습니까?

+0

이미 있습니다. 'dir.isDirectory()'는'false'를 반환했지만 폴더는 존재하지 않습니다. ;) – Hannes

+0

[Documentation] (http://docs.oracle.com/javase/7/docs/api/java/io/File.html#isDirectory()) : "**로 표시된 파일이 **이 추상 경로 이름은 ** 존재하고 디렉토리이며, 그렇지 않으면 false입니다. " –

답변

0

사용 dir.mkdirs()

mkdirs()mkdir()은 만들려고하는 디렉토리의 상위 디렉토리를 찾을 수없는 경우 실패, 바닥 대부분의 디렉토리를 생성합니다 전체의 지정된 디렉토리 경로를 작성합니다.

+0

어떻게 든 여전히 false를 반환합니다. 이 코드는'new File ("/ tmp/nonexistant")'로 평가되며, tmp에 쓸 수 있어야하고 존재하지 않는 것을 생성 할 수 있어야합니까? –

+0

또한 디렉터리를 만들지 않고 File 개체를 가져오고 싶습니다. 가능합니까? –

+0

File 객체는 파일의 경로가 필요하므로 디렉토리는 필요하지만 기존 디렉토리에 파일을 보관할 수 있습니다. – Kick

0

후행 슬래시는 중요하지 않습니다. 이 추상 패스 명이 나타내는 파일이 존재 해, 디렉토리 인 경우에만, File.isDirectory는 false를 돌려 주므로, javadoc로부터의

1

: "이 추상 패스 명이 나타내는 파일이 존재 해, 디렉토리 일 경우에만 true "

파일이 존재하지 않으면 isDirectory()는 false를 반환합니다. 만약 당신이 테스팅을하고 있다면 아마도 스텁을 사용하는 것이 더 좋은 선택이 될 수 있습니다. 단위 테스트에서는 파일 시스템과 같은 외부 리소스를 건드리지 않는 것이 좋습니다.