一、File 类的基本介绍
在整个 IO 包中,唯一与文件本身有关的类就是 File
类,使用 File
类可以进行创建或删除文件等常用操作。要使用 File
类,则首先要观察 File 类的构造方法:
public File(String pathname) //实例化 File 类时,必须设置好路径
可以发现,如果要使用一个 File 类,则必须向 File 类的构造方法中传递一个文件路径
例如,要操作 D 盘下的 test.txt 文件,则路径必须写成“d:\\test.txt
”,其中“\\
”表示一个“\
”,而要操作文件还需要使用 File 类中定义的若干方法:
这里 File 类中的常量定义的命名规则不符合标准命名规则,因为File 类出现比较早,当时并没有对命名规范有严格的要求
二、使用 File 类操作文件
1. 创建一个新文件
File 类的对象实例化完成之后,就可以使用 createNewFile 创建一个新文件,但是此方法使用了 throws 关键字,所以在使用中,必须使用 try…catch 进行异常处理
import java.io.File;
import java.io.IOException;
public class Test{
public static void main(String[] args) {
File f = new File("D:\\test.txt");//必须给出完整路径
try{
f.createNewFile();//根据给定的路径创建新文件
}catch (IOException e){
e.printStackTrace();
}
}
}
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
不同的操作系统中,路径的分隔符表示是不一样的:
Windows 中使用反斜杠表示目录的分隔符“\”
Linux 中使用正斜杠表示目录的分隔符 “/”
- 2
由于Java程序本身具有可移植性,所以编写路径时,最好根据程序所在的操作系统自动使用符合本地操作系统要求的分隔符
import java.io.File;
public class Test{
public static void main(String[] args) {
System.out.println("pathSeparator:" + File.pathSeparator);//调用静态常量,表示路径的分隔符
System.out.println("sepatator:" + File.separator);//调用静态常量,表示路径的分隔符
}
}
- 2
- 3
- 4
- 5
- 6
- 7
- 8
修改为适应任意的操作系统使用
import java.io.File;
import java.io.IOException;
public class Test{
public static void main(String[] args) {
String path = "D:" + File.separator + "test.txt";//拼凑出可以适应操作系统的路径
File f = new File(path);//必须给出路径
try{
f.createNewFile();
}catch (IOException e){
e.printStackTrace();
}
}
}
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
操作文件时一定要使用 File.separator
表示分隔符
2. 删除一个指定的文件
File 类中也支持删除文件的操作,如果哦要删除一个文件,可以使用 File 类中的 delete() 方法
import java.io.File;
public class Test{
public static void main(String[] args) {
String path = "D:" + File.separator + "test.txt";//拼凑出可以适应操作系统的路径
File f = new File(path);//必须给出路径
if (f.exists()){//删除文件之前需要先判断文件是否存在
f.delete();//如果存在,删除文件
}
}
}
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
3. 创建一个文件夹
import java.io.File;
public class Test{
public static void main(String[] args) {
String path = "D:" + File.separator + "test";//拼凑出可以适应操作系统的路径
File f = new File(path);//必须给出路径
f.mkdir();//创建文件夹
}
}
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
4. 列出指定目录的全部文件
public String[] list():列出全部名称,返回一个字符串数组
public File[] listFiles():列出完整的路径,返回一个 File 对象数组
import java.io.File;
public class Test{
public static void main(String[] args) {
String path = "D:" + File.separator;//给出路径
File f = new File(path);//必须给出路径
String str1[] = f.list();//列出给定目录中的内容
File str2[] = f.listFiles();//列出全部的文件
for (String x:str1){
System.out.println(x);
}
for (File x:str2){
System.out.println(x);
}
}
}
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
5. 判断一个给定的路径是否是目录
可以直接使用 isDirectory() 方法判断给定的一个路径是否是目录
import java.io.File;
public class Root{
public static void main(String[] args) {
File f = new File("D:" + File.separator);//路径
if (f.isDirectory()) {
//判断是否是目录
System.out.println(f.getPath() + "路径是目录。");
}else {
System.out.println(f.getPath() + "路径不是目录。");
}
}
}
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
三、列出指定目录的全部内容
给定一个目录要求列出该目录下的全部内容,包括子文件夹。
首先判断给定的路径是否是目录,然后再使用 listFiles() 列出一个目录中的全部内容,一个文件夹中可能包含其他的文件或者子文件夹,子文件夹也可能会包含其他的子文件夹,所以此处只能采用递归的调用方式完成。
import java.io.File;
public class Test{
public static void main(String[] args) {
File my = new File("D:" + File.separator);//操作路径
print(my);
}
public static void print(File file){
//递归调用此方法
if (file != null) {//增加一个检查机制
if (file.isDirectory()) {//判断是否是目录
File f[] = file.listFiles();//如果是目录,则列出全部的内容
if (f != null) {//有可能无法列出目录中的文件
for (File x:f){
print(x);//继续列出内容
}
}
}else {
System.out.println(file);//如果不是目录则直接打印路径信息
}
}
}
}
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23