web-dev-qa-db-ja.com

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

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

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

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

76
n0pe

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

174
jtahlborn
File theDir = new File(DirectoryPath);
if (!theDir.exists()) theDir.mkdirs();
19
Eng.Fouad
File directory = new File(tmp.getParentFile().getAbsolutePath());
directory.mkdirs();

ディレクトリが既に存在する場合、何も起こりませんので、チェックは必要ありません。

14
Jake Roussel

Java 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();
        }
    }
}
4
ahmet

StringUtils.touch(/path/filename.ext)は、ディレクトリとファイルが存在しない場合は作成します(> = 1.3)。

3
NathanChristie

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

Android devs:Files.createDirectories()Paths.get()のようなものを呼び出すことは、最小API 26をサポートするときに機能します。

0
Alejandra