java的mkdir()为什么不需要捕获异常而createNewFile()需要? 20

 我来答
逸_公子
2015-11-16 · TA获得超过186个赞
知道答主
回答量:183
采纳率:0%
帮助的人:50.9万
展开全部
createNewFile() 时可能它的某个父文件夹不存在 比如c:/a/b/1.txt 如果C盘下没有一个文件夹叫 a 的话,就会抛如下异常:
Exception in thread "main" java.io.IOException: 系统找不到指定的路径。
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(File.java:883)
at cn.test.Ts.main(Ts.java:13)
因为这个Native Method没有创建父文件夹的功能

调用 someFile.getParentFile().mkdirs()方法就是为了创建这个文件
因为是mkdirs()方法会递归的调用自身:“&& (parent.mkdirs() " ,直到要创建的文件夹的父文件夹存在:
if (mkdir()) { return true; }
所以不会发生找不到路径的情况 找不到路径我就一直创建,就不需要抛ioexception
追问
哦?那比如我不存在C盘,然后我
File dir=new File("c:/dir");
dir.mkdir();
它难道可以递归创建一个盘?也不行吧?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式