来源:博客园精华区 一个字母引发的血案马上放年假了,临放假前有个爬虫的任务,其中需要把网络图片保存到本地,很简单,马上写完了代码: //省略部分代码...
Long fileId= (Long) data.get("FilmId"); File filmpath= new File(path fileId); if (!filmpath.exists())
filmpath.mkdir(); //省略部分代码...
OutputStream os = new FileOutputStream(path fileId "\\" id ".jpg");
跑起来发现突然爆出如下错误: java.io.FileNotFoundException: E:\data\Pic\21324900\2415585464.jpg (系统找不到指定的路径。) 看到这个错误马上打开本地文件夹,看一眼路径是否存在,一看不存在,马上开始打断点排查问题,结果发现把filmpath.mkdirs() 写成了filmpath.mkdir() 一直用mkdirs()缺忽略了还有一个mkdir(),这两个到底有什么区别呢? mkdirs() 与 mkdir() 不同官方文档给的解释是:boolean mkdir() 创建此抽象路径名指定的目录。 boolean mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。 通过Demo通俗的解释一下:String path ="E:\\data\\a\\b\\c"; Boolean result = new File(path).mkdir();
System.out.println(result);
当c的父目录存在时 返回true 当c的父目录不存在时 返回false String path ="E:\\data\\a\\b\\c"; Boolean result = new File(path).mkdirs();
System.out.println(result);
System.in.read();
当c父的目录不存在时,mkdirs会创建父目录 返回true mkdirs 源码public boolean mkdirs() { if (exists()) { return false;
} if (mkdir()) { return true;
}
File canonFile = null; try {
canonFile = getCanonicalFile();
} catch (IOException e) { return false;
}
File parent = canonFile.getParentFile(); return (parent != null |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|