例如我們要建立一個檔案路徑為 logs/test.log,使用 File 類別如下

1
2
String filePath = "logs/test.log";
File file = new File(filePath);

此時如果直接 createNewFile()

1
2
3
4
5
6
7
8
9
if(!file.exists())
{
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

會因為 parent 的資料夾不存在而失敗,而這時直接使用 mkdirs()

1
2
3
4
5
6
7
8
9
10
if(!file.exists())
{
file.mkdirs();
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

但這樣會把 01.log 也當成資料夾建立,就無法 createNewFile,所以應該先切換到上層目錄再進行 mkdirs()

1
2
3
4
5
6
7
8
9
10
if(!file.exists())
{
file.getParentFile().mkdirs();
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}