54
Java File的简单使用(创建、删除、遍历、判断是否存在等)
Java文件类以抽象的方式代表文件名和目录路径名。该类本身不能用来读数据或写数据,它主要用于磁盘上文件和目录的创建、文件的查找和文件的删除。做一些非读写方面的工作,比如看看文件是否存在、是否可读写及遍历文件目录等等。要想读写数据,必须和其它io流的类配合使用,比如FileInputStream、FileOutputStream等。File对象代表磁盘中实际存在的文件和目录,以下就通过一些简单的列子介绍File的基本使用。
这是整个File简单使用的代码:
FileDemo.Java
下面分别介绍常用的几种方法:
1、遍历指定目录之下的所有文件( 遍历" D:/Demo "中的所有文件及目录 )
D磁盘中Demo目录的结果如下所示:
示例代码:
复制代码
String dirname = “D:/Demo”;
// 实例化一个File对象
File f1 = new File(dirname);
// 1. 遍历指定目录之下的所有文件
// 判断f1对象是否是一个目录
if (f1.isDirectory()) {
System.out.println("Directory of " + dirname);
String[] s = f1.list();
// 遍历s数组,取出数组中的元素进行判断
for (int i = 0; i < s.length; i++) {
File f = new File(dirname + "/" + s[i]);
if (f.isDirectory()) {
System.out.println(s[i] + " is a directory");
} else {
System.out.println(s[i] + " is a file");
}
}
} else {
// 不是一个目录
System.out.println(dirname + " is not a directory");
}
// expected output:
// Directory of D:/Demo
// BufferedInputStream.java is a file
// BufferedOutputStream.java is a file
// childFile is a directory
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
复制代码
输出结果:
2、测试指定文件是否可执行
复制代码
/*
* 2. 测试指定文件是否可执行
* 测试应用程序是否可以执行此抽象路径名表示的文件
* true: 当且仅当存在抽象路径名,并允许应用程序执行该文件时
*/
System.out.println(dirname + " allowed to execute? " + f1.canExecute());
// expected output: D:/Demo allowed to execute? true
复制代码
3、测试指定文件是否可读取
复制代码
/*
* 3. 测试指定文件是否可读取
* 测试应用程序是否可以读取由此抽象路径名表示的文件
* true: 当且仅当此抽象路径名指定的文件存在并可由应用程序读取时;
* false: 与true相反
*/
System.out.println(dirname + " allowed to read? " + f1.canRead());
// expected output: D:/Demo allowed to read? true
复制代码
4、测试指定文件是否可写
复制代码
/*
* 4. 测试指定文件是否可写
* 测试应用程序是否可以修改由此抽象路径名表示的文件
* true: 当且仅当文件系统实际上包含由该抽象路径名表示的文件并且允许应用程序写入该文件时;
* false: 与true相反
*/
System.out.println(dirname + " allowed to write? " + f1.canWrite());
// expected output: D:/Demo allowed to write? true
复制代码
样例2、3、4的结果可参考Demo 的属性
5、比较抽象路径名和参数抽象路径名是否相等,根据字典顺序进行比较
复制代码
/*
* 5. 比较抽象路径名和参数抽象路径名是否相等
* 比较两个抽象的路径名字典是否相等 等于零则相等,小于零则抽象路径名字典小于参数路径字典,大于则相反
* 比较规则按照字典顺序进行排序
*/
String s1 = “C:/Boot”;
// “D:/Demo” 与 “C:/Boot” 比较
System.out.println(f1.compareTo(new File(s1)));
// expected output: 1
String s2 = “D:/Deoo”;
// “D:/Demo” 与 “D:/Deoo” 比较
System.out.println(f1.compareTo(new File(s2)));
// expected output: -2
复制代码
结果:
6、创建一个新文件
复制代码
/*
* 6. 创建一个新文件
* 当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件
* true: 如果命名文件不存在并被成功创建;
* false: 如果命名文件已经存在
*/
File f3 = new File("/Boot");
try {
System.out.println("/Boot file is created? " + f3.createNewFile());
// expected output: /Boot file is created? false
} catch (IOException e) {
e.printStackTrace();
}
复制代码
结果:
7、创建一个目录
复制代码
/*
* 7. 创建一个目录
* 创建由此抽象路径名命名的目录
*/
String dirnames = “D:/tmp/boot”;
File f4 = new File(dirnames);
// 创建一个文件夹,成功则返回true,失败则返回false。
// 失败表明File对象指定的路径已经存在,或者由于整个路径还不存在,该文件夹不能被创建。
System.out.println("create mkdir is " + f4.mkdir());
// expected output: create mkdir is true
复制代码
结果:
8、创建一个目录,包括其不存在的父级目录,因为在上列中创建了对应的目录文件,所有mkdirs创建就返还false
复制代码
/*
- 创建一个目录,包括其不存在的父级目录
- 创建一个文件夹和它的所有父文件夹 失败表明File对象指定的路径已经存在
*/
System.out.println("create mkdirs is " + f4.mkdirs());
// expected output: create mkdirs is false
复制代码
9、删除文件或者目录(删除前面创建的/tmp路径下的boot)
复制代码
/*
* 9. 删除文件或者目录
* 删除由此抽象路径名表示的文件或目录
* true当且仅当文件或目录被成功删除时; false否则
*/
System.out.println(dirnames + " deleted is " + f4.delete());
// expected output: D:/tmp/boot deleted is true
复制代码
结果:
10、取得抽象路径的名称
复制代码
/*
* 10. 取得抽象路径的名称
* 取到抽象路径名表示的文件或目录的名称
*/
System.out.println("getName is " + f1.getName());
// expected output: getName is Demo
复制代码
结果:
11、取得抽象路径的字符串
复制代码
/*
* 11. 取得抽象路径的字符串
* 获得由抽象路径名转换为路径名字符串
*/
System.out.println("getPath is " + f1.getPath());
// expected output: getPath is D:\Demo
复制代码
结果:
12、取得抽象路径的绝对路径
复制代码
/*
* 12. 取得抽象路径的绝对路径
* 获得此抽象路径名的绝对路径名字符串
*/
System.out.println("Absolute Path is " + f1.getAbsolutePath());
// expected output: Absolute Path is D:\Demo
复制代码
结果:
13、判断抽象路径指定的文件或目录是否存在
复制代码
/*
* 13. 判断抽象路径指定的文件或目录是否存在
* 测试此抽象路径名表示的文件或目录是否存在
* true: 当且仅当存在由此抽象路径名表示的文件或目录时;
* false: 与true相反
*/
System.out.println(f1.exists() ? “exist” : “not”);
// expected output: exist