我有一个条件语句,用于检查在继续之前是否存在某个文件(./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();
如果目录已经存在,什么也不会发生,因此你不需要进行任何检查。
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();
}
}
}
StringUtils.touch(/path/filename.ext)
现在(>=1.3版本)也会在目录和文件不存在时创建它们。
FileUtils.touch(new File(file_path))
。 - shark1608不会,如果logs
不存在,则会收到java.io.IOException: No such file or directory
对于 Android 开发人员的有趣事实:在支持最小 API 26 的情况下,调用类似Files.createDirectories()
和 Paths.get()
的方法是可行的。