Java's createNewFile() - will it also create directories?
I've got a conditional to check if a certain file exists before proceeding (./logs/error.log
). If it isn't found I want to create it. However, will
File tmp = new Fil开发者_如何学Ce("logs/error.log");
tmp.createNewFile();
also create logs/
if it doesn't exist?
No.
Use tmp.getParentFile().mkdirs()
before you create the file.
File theDir = new File(DirectoryPath);
if (!theDir.exists()) theDir.mkdirs();
File directory = new File(tmp.getParentFile().getAbsolutePath());
directory.mkdirs();
If the directories already exist, nothing will happen, so you don't need any checks.
Java 8 Style
Path path = Paths.get("logs/error.log");
Files.createDirectories(path.getParent());
To write on file
Files.write(path, "Log log".getBytes());
To read
System.out.println(Files.readAllLines(path));
Full example
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)
will now (>=1.3) also create the directory and file if they don't exist.
No, and if logs
does not exist you'll receive java.io.IOException: No such file or directory
Fun fact for android devs: calls the likes of Files.createDirectories()
and Paths.get()
would work when supporting min api 26.
精彩评论