사용할 때
file.createNewFile();
다음 예외가 발생합니다.
java.io.IOException: Parent directory of file does not exist: /.../pkg/databases/mydb
누락 된 상위 디렉토리를 생성하는 createNewFile이 있는지 궁금합니다.
답변
이거 해봤 어?
file.getParentFile().mkdirs();
file.createNewFile();
이 작업을 수행 할 단일 메서드 호출을 모르지만 두 개의 문으로 매우 쉽습니다.
답변
Jon의 대답은 파일을 만드는 데 사용하는 경로 문자열에 상위 디렉토리가 포함되어 있다고 확신하는 경우, 즉 경로가 형식임을 확신하는 경우 작동합니다 <parent-dir>/<file-name>
.
그렇지 않은 경우,이 형태의 상대 경로 즉 <file-name>
, 다음 getParentFile()
반환합니다 null
.
예
File f = new File("dir/text.txt");
f.getParentFile().mkdirs(); // works fine because the path includes a parent directory.
File f = new File("text.txt");
f.getParentFile().mkdirs(); // throws NullPointerException because the parent file is unknown, i.e. `null`.
따라서 파일 경로에 상위 디렉토리가 포함되거나 포함되지 않을 수있는 경우 다음 코드를 사용하면 더 안전합니다.
File f = new File(filename);
if (f.getParentFile() != null) {
f.getParentFile().mkdirs();
}
f.createNewFile();
답변
java7부터 NIO2 API를 사용할 수도 있습니다.
void createFile() throws IOException {
Path fp = Paths.get("dir1/dir2/newfile.txt");
Files.createDirectories(fp.getParent());
Files.createFile(fp);
}