当且仅当该文件不存在时才想创建文件。如果不存在,创建文件和中间目录
作为一例文件位置指的是 “C:\用户\桌面\ DIR1 \ DIR2 \ FILENAME.TXT”
if (!file.exists()) {
try {
file.createNewFile();
} catch(IOException ioe) {
ioe.printStackTrace();
return;
}
}
不幸的是,上面的代码失败,因为dir1
和dir2
不存在。
对于我而言
- 某个时刻DIR1和DIR2可能存在并且有时他们可能不存在。
- 我不希望覆盖这些中间目录的内容,如果他们已经存在,
如何干净地检查这个?
我想补充以下检查以处理这种情况:
if (!file.getParentFile().getParentFile().exists()) {
file.getParentFile().getParentFile().mkdirs();
}
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
if (!file.exists()) {
try {
file.createNewFile();
} catch(IOException ioe) {
ioe.printStackTrace();
return;
}
}
或者有比这更清晰的解决方案?
你不需要检查'exists()'。 'mkdirs()'只有在不存在的情况下才会创建目录。 –
如果该目录已经存在,我将再次调用mkdirs()会发生什么? – Exploring
它会跳过。它不会创建一个新目录。检查该方法的文档。它清楚地提到了这件事。 –