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

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

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

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



답변

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


답변

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


답변

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

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


답변

자바 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();
        }
    }
}


답변

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


답변

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

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


답변