java.io.File類中mkdir()與mkdirs()區別__java.io.File.mkdir

來源:互聯網
上載者:User

在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 blocke.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 blocke.printStackTrace();}}}</span>
編譯運行,可以在該常式工程目錄(檔案夾)下看到如下結果:





path1是一個一級路徑,使用java.io.File.mkdir()可以成功建立對應的目錄;

而path2是一個二級路徑,使用java.io.File.mkdir()卻不能建立對應的目錄;

path3是一個一級路徑,path4是一個二級路徑,分別使用java.io.File.mkdirs()均可以成功建立各自對應的目錄。

測試常式原始碼(github)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.