java.io.File類中mkdir()與mkdirs()區別
阿新 • • 發佈:2019-02-01
在Java中對檔案進行操作時常常用到java.io.File.mkdir()和java.io.File.mkdirs()兩個方法來建立一個目錄(資料夾),這兩個方法非常相似,都是無引數且返回值都為boolean型別的方法,都是用於建立指定路徑名稱對應的目錄,但二者主要區別如下:
java.io.File.mkdir():只能建立一級目錄,且父目錄必須存在,否則無法成功建立一個目錄。
java.io.File.mkdirs():可以建立多級目錄,父目錄不一定存在。
下面給出一個例程可以深刻體會二者的區別:
編譯執行,可以在該例程工程目錄(資料夾)下看到如下結果:<span style="font-size:18px;">import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Date; /** * mkdir與mkdirs測試例程 * 時間:2016-5-15 22:34 * 說明:1、java.io.File.mkdir()和java.io.File.mkdirs()都用於建立指定路徑名稱對應的目錄。 * 但java.io.File.mkdir()只能建立一級目錄且父目錄必須存在,否則將無法正確建立一個目錄; * java.io.File.mkdir()可以建立多級目錄,父目錄不一定存在。 * */ public class mkdirsAndmkdirTestMain { private static final String path1="path1"; private static final String path2="path2/path2/"; private static final String path3="path3"; private static final String path4="path4/path4/"; private static final String filePath1="file1.txt"; /** * @param args */ public static void main(String[] args) { File file1=new File(path1); if(!file1.exists()){ file1.mkdir(); } System.out.println(file1.getPath()); File file2=new File(path2); if(!file2.exists()){ file2.mkdir(); } System.out.println(file2.getPath()); File file3=new File(path3); if(!file3.exists()){ file3.mkdirs(); } System.out.println(file3.getPath()); File file4=new File(path4); if(!file4.exists()){ file4.mkdirs(); } System.out.println(file4.getPath()); File file4_1=new File(path4+filePath1); if(!file4_1.exists()){ try { file4_1.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println(file4_1.getPath()); try { PrintWriter pw=new PrintWriter(new BufferedWriter(new FileWriter(file4_1))); long current=System.currentTimeMillis(); String time=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(current)); pw.write("時間:"+time); pw.println(); pw.println("當前檔案絕對路徑:"+file4_1.getAbsolutePath()); pw.write("當前檔案相對路徑:"+file4_1.getPath()); pw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } </span>
path1是一個一級路徑,使用java.io.File.mkdir()可以成功建立對應的目錄;
而path2是一個二級路徑,使用java.io.File.mkdir()卻不能建立對應的目錄;
path3是一個一級路徑,path4是一個二級路徑,分別使用java.io.File.mkdirs()均可以成功建立各自對應的目錄。