Ответ 1
Нет.
Используйте tmp.getParentFile().mkdirs()
перед созданием файла.
У меня есть условие, чтобы проверить, существует ли определенный файл перед продолжением (./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();
Если каталоги уже существуют, ничего не произойдет, поэтому вам не нужны проверки.
StringUtils.touch(/path/filename.ext)
теперь ( >= 1.3) также создаст каталог и файл, если они не существуют.
Стиль 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();
}
}
}
Нет, и если logs
не существуют, вы получите java.io.IOException: No such file or directory
Интересный факт для разработчиков Android: вызовы подобных Files.createDirectories()
и Paths.get()
будут работать при поддержке min api 26.