File类是一个专门操作文件的类。它能够把你磁盘上的某一个文件或文件夹作为一个对象从而能够对这个文件或这个文件夹进行增删改查的操作,比如新增文件,查看文件属性。删除文件。
这些文件和文件夹都会对应着一个路径
1,File根据路径获取一个File实例对象,并判断其是否存在或着判断属于文件夹还是文件
File file = new File("F:/java");
File file = new File(String path);
这样就获取了一个File对象。它控制的路径是F:/java。
这个路径是抽象的,这个File对象不知道这个路径代表的是文件夹还是文件,或着什么都不是。因此它提供了以下几个方法来判断
file.exists();//返回一个boolean,判断该路径表示的文件或文件夹是否存在
file.isFile();//返回一个boolean,判断该路径是否是文件
file.isDirectory;//返回一个boolean,判断该路径是否是文件夹
File file = new File("F:/java");
//判断该路径是否存在
boolean exists = file.exists();
//以下判断只有在上述exists为true时才有意义.否则永远返回false
//判断是否是文件夹
boolean directory = file.isDirectory();
//判断是否是文件
boolean file1 = file.isFile();
2,使用File对象来创建,删除文件或文件夹
上面说到,File对象获取的路径是一个抽象路径。Flie对象可以在这个路径上进行文件的创建和删除。
File file = new File("F:/java");
//创建一个java文件夹在F盘下,前提是file.exists()返回false
boolean mkdir = file.mkdir();
File file1 = new File("F:/java/java.txt");
//创建一个名称叫java.txt的文件在F:/java盘下,前提该文件夹已存在,否则会出异常且file1.exists()返回fasle,
boolean newFile = file1 .createNewFile();
执行结果如下
如果createNewFile()的File对象所在目录不存在会抛出一个IO异常
3,获取执行路径下所有文件(不包括子文件夹下的文件)
比如在F:/java下有两个路径,一个是文件一个是文件夹
在file底下还有一个文件
file.listFiles();//获取该路径下所有文件对应的路径的Flie对象数组
File file = new File("F:/java");
File[] files = file.listFiles();
for (File f: files) {
System.out.println(f.getName());
}
执行结果如下:
4,获取指定路径下所有文件(包括子文件夹的文件)
public static void main(String[] args) throws IOException {
File file = new File("F:/java");
fun(file);
}
public static void fun(File file){
File[] files = file.listFiles();
if(Objects.nonNull(files)){
for (File f: files) {
if(f.isDirectory()){
System.out.println(f.getName());
//如果是文件夹再次执行当前方法,也就是递归。
fun(f);
}else {
System.out.println(f.getName());
}
}
}
}
执行结果如下:
5,删除指定路径表示的文件或文件夹
file.delete();//删除指定路径表示的文件或文件夹,如果是文件夹则必须其目录下没有任何文件时才能删除。
File file = new File("F:/java");
//当文件不存在或文件夹下还有文件时返回false即删除失败
boolean delete = file.delete();
6,重名名指定路径表示的文件或文件夹
file.renameTo(File file);//重命名此路径表示的文件或文件夹。
//当file.exists()为true,newfile.exists()为false时才有效
File file = new File("F:/java/java.txt");
File newfile = new File("F:/java/javase");
file.renameTo(newfile);