在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()均可以成功創建各自對應的目錄。
測試例程源代碼(github)
Tags:
文章來源: