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();
}
程序正确执行后,为了优化存储文件的位置,将类似./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();
}
相关文章推荐
- Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录
- java.io.File的两个运用实例-文件的删除及树形目录
- java中File文件的创建,删除,复制,移动,以及目录文件的删除等等,主要是文件及文件夹的操作
- java文件操作整理(一)--递归删除目录和文件的程序
- Android--查找程序根目录下所有文件/Java IO操作
- java File的基本操作实例(目录及文件的 新建/拷贝/移动)
- java.io.file 各种文件操作
- java.io.file 各种文件操作
- java.io.file 各种文件操作
- java 莫用 jdk 的File对文件进行删除、改名等操作
- Java基础之File类,递归删除目录与文件
- JAVA之IO技术-获取指定目录下的文件夹和文件的File对象或是字符串名称。
- java.io.File类各种文件操作
- java文件操作整理(一)--递归删除目录和文件的程序
- Java Io文件操作(读写、追加、删除、移动、复制、修改)
- java文件操作整理(一)--递归删除目录和文件的程序
- java.io.File类各种文件操作
- java.io.file.delete()不能正常删除文件的原因!
- java:File类中对文件或目录进行操作的常用方法以及遍历文件夹下面的文件
- java中对文件file的操作 新建文件 移动文件 复制文件 删除文件