Java의 createNewFile ()-디렉토리도 생성합니까?


85

진행하기 전에 특정 파일이 있는지 확인하는 조건이 있습니다 ( ./logs/error.log). 찾을 수 없으면 만들고 싶습니다. 그러나

File tmp = new File("logs/error.log");
tmp.createNewFile();

logs/존재하지 않는 경우 도 만드 시겠습니까?

답변:


188

아니요 . 파일을 만들기 전에
사용하십시오 tmp.getParentFile().mkdirs().


죄송합니다. 나는 "tmp.mkdirs ()"를 사용하고 있었다. 내 파일이있는 폴더로 생성되고 있었다 이유
GabrielBB

20
File theDir = new File(DirectoryPath);
if (!theDir.exists()) theDir.mkdirs();

6
"mkdir"대신 "mkdirs"를 사용하여 코드가 존재하지 않는 상위 폴더도 만들 수 있도록 제안합니다. :)
Nimpo

14
File directory = new File(tmp.getParentFile().getAbsolutePath());
directory.mkdirs();

디렉토리가 이미 존재하는 경우 아무 일도 일어나지 않으므로 검사 할 필요가 없습니다.


8

자바 8 스타일

Path path = Paths.get("logs/error.log");
Files.createDirectories(path.getParent());

파일에 쓰려면

Files.write(path, "Log log".getBytes());

읽다

System.out.println(Files.readAllLines(path));

전체 예

public class CreateFolderAndWrite {

    public static void main(String[] args) {
        try {
            Path path = Paths.get("logs/error.log");
            Files.createDirectories(path.getParent());

            Files.write(path, "Log log".getBytes());

            System.out.println(Files.readAllLines(path));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3

StringUtils.touch(/path/filename.ext) 이제 (> = 1.3) 디렉토리와 파일이 존재하지 않으면 생성합니다.


1
후반 코멘트를 용서하지만 지금해야FileUtils.touch(new File(file_path))
shark1608

0

아니요, logs존재하지 않으면 받게됩니다.java.io.IOException: No such file or directory

안드로이드 DEVS에 대한 재미있는 사실은 :의 좋아하는 통화 Files.createDirectories()Paths.get()분 API (26)를 지원할 때 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.