JAVA 中File mkdir()与mkdirs()

今天有人问我,为什么他的权限写了,使用File.mkdir()却创建不了文件,我觉得这个要和大家分享一下,让大家少走弯路。


1、先来看File.mkdirs()

File dir new File("Environment.getExternalStorageDirectory().getPath()/xxx/yyy");

if (!dir.exists()) {

    dir.mkdirs();  

}

解说:这是一个在SDCard上建立文件的方法,mkdirs()方法一般是用来建立“多级”文件夹目录的,(当你不知道此文件夹是否存在,也不知道父文件夹存在不存在),就可用此方法,它建立文件夹的原则是:如果父文件夹不存在并且最后一级子文件夹不存在,它就自动新建所有路经里写的文件夹;如果父文件夹存在,那么它就会直接在已经存在的父文件夹下新建子文件夹。 

拿上面的例子来说,当xxx这个父级文件夹不存在且yyy这个文件夹也不存在时,那么当new这个file时,会自动创建“xxx/yyy”这个层级文件夹,如果xxx这个父级文件夹存在,那么就直接在xxx下面一级创建yyy这个文件夹。


2、File.mkdir()

File dir new File("Environment.getExternalStorageDirectory().getPath()/xxx/yyy");

解说:如果你想在已经存在的文件夹yyy下建立新的文件夹(zzz文件夹),就可以用File.mkdir()方法。此方法不能在不存在的文件夹下建立新的文件夹。必须要现有父文件夹才能在父文件夹下建立想要的子文件夹,也就是现有爸爸才能有儿子。假如想建立名字是"/xxx/yyy/zzz"文件夹,那么它的父文件夹必须存在。它一般用来创建单级目录。


对了,补充一点,file.mkdir() 和file.mkdirs()它们只是用来创建文件夹目录,如果想要创建xxx.jpg,xxx.txt这样的文件,需要这样


    /** 

     * 在SD卡上创建文件 

     *  

     * @throws IOException 

     */  

    public File creatSDFile(String fileName) throws IOException {  

        File file = new File(fileName);  

        file.createNewFile();  

        return file;  

    }  

   
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 方法的区别是什么? mkdir()方法用于创建单级目录,如果父级目录不存在则创建失败。 mkdirs()方法用于创建多级目录,如果父级目录不存在则会一并创建。 例如,如果要创建目录“/a/b/c”,使用mkdir()方法需要先创建“/a”和“/a/b”两个目录,而使用mkdirs()方法则可以直接创建“/a/b/c”目录。 总之,mkdir()方法适用于创建单级目录,mkdirs()方法适用于创建多级目录。 ### 回答2: 在JavaFile类提供了两种方法用于创建目录,即mkdir()和mkdirs()。 1. mkdir() 该方法用于创建一个目录,如果该目录的父目录不存在,则会创建失败。例如: ``` File file = new File("D:/test"); if(!file.exists()){ file.mkdir(); } ``` 上述代码会在D盘根目录下创建一个名为test的目录,但如果D盘不存在,则会抛出异常。 2. mkdirs() 该方法同样用于创建一个目录,但不同的是,如果该目录的父目录不存在,则会连带父目录一起创建。例如: ``` File file = new File("D:/test1/test2/test3"); if(!file.exists()){ file.mkdirs(); } ``` 上述代码会在D盘根目录下创建一个名为test1的目录,并在其创建test2和test3两个子目录。 总的来说,mkdir()方法适用于创建单层目录,而mkdirs()方法适用于创建多层目录。在使用这两个方法时,需要注意文件路径是否正确,避免出现异常情况。 ### 回答3: JavaFile类提供了mkdir()和mkdirs()方法,两者的目的都是创建新的目录,但是两者的区别是有所不同的。 mkdir()方法 mkdir()方法用于创建单个目录。如果指定的目录已经存在,则不执行任何操作。如果创建成功,则返回true;如果失败,则返回false。例如,以下代码将创建一个名为“example”的目录: File directory = new File("example"); boolean created = directory.mkdir(); mkdirs()方法 mkdirs()方法用于同时创建多个目录,包括需要创建的目录的父目录。如果指定的目录已经存在,则不执行任何操作。如果创建成功,则返回true;如果失败,则返回false。例如,以下代码将创建一个名为“parent/child/grandchild”的目录: File directory = new File("parent/child/grandchild"); boolean created = directory.mkdirs(); 需要注意的是,mkdirs()方法不会抛出异常,而是返回一个布尔值标识创建是否成功,这是与mkdir()方法的不同之处。在使用mkdirs()方法创建目录时,程序可以不必关心父目录是否存在。 总结 在已经存在父目录的情况下,mkdir()和mkdirs()方法都可以创建目录。但是,如果要同时创建父目录和子目录,那么只有mkdirs()方法才能完成这个任务。最后需要注意的是,为了安全起见,需要确保创建的目录名称不包含文件分隔符或特殊字符。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值