1. 程式人生 > >java.io.File類中mkdir()與mkdirs()區別

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

在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()均可以成功建立各自對應的目錄。