java.io.File类中mkdir()与mkdirs()区别

来源:互联网 发布:淘宝店铺宝贝分类图片 编辑:程序博客网 时间:2024/06/05 05:19

在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)

0 0
原创粉丝点击