您的位置:首页 > 编程语言 > Java开发

java.io.File文件操作容易失误的两点--mkdirs()、删除目录

2018-03-13 20:08 531 查看
在最近的使用到的java.io.File中,忽然产生一个新奇的bug:
     程序正确执行后,为了优化存储文件的位置,将类似./json/的目录改成./data/json/后,程序执行异常,排查原因后发现是./data/json/路径没有被创建导致在这个路径下创建文件file.createNewFile()失败,但是明显在代码里有控制在不存在路径的情况下会创建目录。        File jsonDir = new File(jsonPath);//./json/的目录改成./data/json/
        if (!jsonDir.exists()) {
            jsonDir.mkdir(); //原因是mkdir是创建单程目录,如果是多层目录需要存在父目录才能创建最后一层
        }
        //在这个路径下创建文件
        File file = new File(jsonPath + "zml.json");
        file.createNewFile();

自此,Java语言关于文件操作的这个容易漏而又重要的点--s的重要, 才被我知道:
mkdirs()是创建目录(含多层,但无论父目录是否存在)
mkdir()是创建单层目录或者父目录存在的多级目录的最后一层目录

在java.io.File里还有一个容易忽略的点:
对目录删除不能是一条语句搞定的,而是应该获取这个目录下的文件listFiles()后遍历删除再删除目录dir.delete()。        File dir = new File(jsonPath);
//删除所有 先删除目录下的内容,才能删除目录
if (dir.exists() && dir.isDirectory()) {
File[] fileArray = dir.listFiles();//获取目录下的所有文件
for (File file : fileArray) {
file.delete();
}
    dir.delete();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: