JavaのcreateNewFile()-ディレクトリも作成しますか?


85

続行する前に、特定のファイルが存在するかどうかを確認する条件があります(./logs/error.log)。見つからない場合は作成したいと思います。しかし、

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

logs/それが存在しない場合も作成しますか?

回答:


188

いいえ。ファイルを作成
するtmp.getParentFile().mkdirs()前に使用してください。


おっと。「tmp.mkdirs()」を使用していました。それが私のファイルがフォルダとして作成されていた理由です
GabrielBB 2018年

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

Java8スタイル

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))
許して

0

いいえ、logs存在しない場合は受け取りますjava.io.IOException: No such file or directory

アンドロイド開発者のための楽しい事実は:の同類を呼び出すFiles.createDirectories()Paths.get()分のAPI 26をサポートしているときに働くだろう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.