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)