file.mkdir()、file.mkdirs()和file.createNewFile()的区别

file.mkdir()创建单级文件夹,file.mkdirs()创建多级文件夹,file.createNewFile()创建的是一个文件。

下面通过一个demo来验证一下:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn = findViewById(R.id.btn);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                File internalFile = getCacheDir();
                String internalPath = internalFile.getPath();
                File file1 = new File(internalPath,"demo1");
                File file2 = new File(internalPath,"demo2/demo");
                File file3 = new File(internalPath,"demo3/demo");
                File file4 = new File(internalPath+"/demo3","demo4");
                file2.mkdir();
                file3.mkdirs();
                file4.mkdir();
                try {
                    file1.createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

页面布局上有个按钮,点击按钮创建文件,在点击之前先看一看应用内存的文件目录,好知道这个过程发生了啥,点击前目录如下:

从目录中看到只有一个文件夹和两个文件,运行上面程序后我们来看看变化:

从图中可以看到,file1调用方法file.createNewFile()创建的是一个文件;file2是一个多级目录调用file.mkdir()方法没有创建成功;file3也是一个多级目录调用方法file.mkdirs()方法创建成功;file4是和file2做对比的,以file3的父目录作为父目录调用方法file.mkdir()创建单级文件夹成功;最后我们再加两行代码看看多级目录使用file.createNewFile()方法能否创建成功:

File file5 = new File(internalPath,"demo5/demo");
file5.createNewFile();

运行程序后文件目录并没有发现有新增的文件或文件夹。

总结

file.mkdir()创建单级文件夹,并且需要父目录存在的情况下才能创建成功;file.mkdirs()创建多级文件夹,不论父目录是否存在都能创建成功;file.createNewFile()创建的是一个文件,父目录不存在时不能创建成功。

(0)

相关推荐

  • file.mkdir()、file.mkdirs()和file.createNewFile()的区别

    file.mkdir()创建单级文件夹,file.mkdirs()创建多级文件夹,file.createNewFile()创建的是一个文件. 下面通过一个demo来验证一下: public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setConten

  • 详谈java中File类getPath()、getAbsolutePath()、getCanonical的区别

    简单看一下描述,例子最重要. 1.getPath(): 返回定义时的路径,(就是你写什么路径,他就返回什么路径) 2.getAbsolutePath(): 返回绝对路径,但不会处理"."和".."的情况 3.getCanonicalPath(): 返回的是规范化的绝对路径,相当于将getAbsolutePath()中的"."和".."解析成对应的正确的路径 第一个例子:(使用:".\\src\\test.txt&qu

  • Java文件操作类 File实现代码

    1.概述 对于文件系统的访问是每个语言必须的,java提供了File类来完成对文件或者目录的创建,重命名,删除,文件列表的操作以及判读是否存在. 2.对于文件/目录的操作 操作内容包括: 1:创建对象. 2:判断是否是目录/文件. 3:判断目录或者文件是否存在. 4:修改文件名称. 5:创建文件/创建一个目录/创建所有目录. 6:查询目录下所有目录和文件8输出文件路径 7:删除文件/目录 注:已上操作非必须全部一次使用 3.相关代码 public static void main(String[

  • JavaSE文件操作工具类FileUtil详解

    本文实例为大家分享了JavaSE文件操作工具类FileUtil的具体代码,供大家参考,具体内容如下 先展示一下文件工具类中打印文件夹树形结构的结果: 代码如下: package com.mjq.iotest; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FilenameFilter; import java.io.IOException;

  • Java文件管理操作的知识点整理

    目录 一.基本文件操作 获取及判断文件属性 创建及修改文件 二.文件读写 读文件 写文件 一.基本文件操作 获取及判断文件属性 代码示例如下: import java.io.IOException; public class test { public static void main(String[] args) throws IOException { File file = new File("./test.txt"); System.out.println(file.getPa

  • Android编程之文件读写操作与技巧总结【经典收藏】

    本文实例总结了Android文件读写操作.分享给大家供大家参考,具体如下: 在Android中的文件放在不同位置,它们的读取方式也有一些不同. 本文对android中对资源文件的读取.数据区文件的读取.SD卡文件的读取及RandomAccessFile的方式和方法进行了整理.供参考. 一.资源文件的读取: 1) 从resource的raw中读取文件数据: String res = ""; try{ //得到资源中的Raw数据流 InputStream in = getResources

  • Android 文件读写操作方法总结

    Android 文件读写操作方法总结 在Android中的文件放在不同位置,它们的读取方式也有一些不同. 本文对android中对资源文件的读取.数据区文件的读取.SD卡文件的读取及RandomAccessFile的方式和方法进行了整理.供参考. 一.资源文件的读取: 1) 从resource的raw中读取文件数据: String res = ""; try{ //得到资源中的Raw数据流 InputStream in = getResources().openRawResource(

  • 读取android根目录下的文件或文件夹实例

    最近几天真的是各种意义上的忙,忙着考试,还要忙着课程设计,手上又有外包的项目,另一边学校的项目还要搞,自己的东西还在文档阶段,真的是让人想死啊!! 近半个月来,C#这方面的编码比较多,android和java这里完全搁置了,于是抽空写个小例子. 这个例子非常小,就是一个读取android根目录下的文件夹或文件,当做热一下身. @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstan

  • AjaxFileUpload+Struts2实现多文件上传功能

    本文重点给大家介绍AjaxFileUpload+Struts2实现多文件上传功能,具体实现代码大家参考下本文. 单文件和多文件的实现区别主要修改两点, 一是插件ajaxfileupload.js里接收file文件ID的方式 二是后台action是数组形式接收 1.ajaxFileUpload文件下载地址http://www.phpletter.com/Demo/AjaxFileUpload-Demo/ 2.引入jquery-1.8.0.min.js.ajaxFileUpload.js文件 3.文

  • Android 软件自动更新功能实现的方法

    相信所有的用户都遇到过软件提醒更新的情况,下面就将实现此功能 首先看一下程序目录结构    步骤: 1.新建一个类UpdateManger,用于显示提示更新 复制代码 代码如下: public class UpdateManger { // 应用程序Context private Context mContext; // 提示消息 private String updateMsg = "有最新的软件包,请下载!"; // 下载安装包的网络路径 private String apkUrl

随机推荐