文章目录
1.FILE类的介绍
- java.io.File类
- 计算机存储路径,目录,文件
- File类将计算机中的路径,目录,文件做成一个对象
- 提供很多的方法,操作路径,文件和方法
- 计算机操作系统
- 目录就是文件夹(DIrectory),不能存储数据,是文件的容器
- 文件(File),可以存储数据
- 路径(path),一个文件或者目录,在计算机中的存储位置
- java中的路径‘/’和‘\’没有区别
2.File类,是平台无关性的类
三种方法创建File类的对象
- File(pathname);
不管文件的路径地址对不对,在计算机中是否存在,都可以创建一个文件对象。
- File(parent,child);
要求,子类的文件地址必须要在父类的地址下面
- File(file,pathname);
这里和上面的方法,不一样,因为传入的一个是对象,可以调用一些其他的方法。
3.File类创建,删除文件的操作
File类的创建文件
public static void CreateFileText() throws IOException {
File file = new File("e:/a.txt");
boolean b = file.createNewFile();
System.out.println(b);
}
要点:创建的路径可以存在,也可以不存在
实例:如果创建的文件路径已经存在,那么返回false,不存在,则返回true
File类的创建目录
public static void CreateDir(){
File file = new File("e:/a/b/c/d");
boolean b= file.mkdirs();
System.out.println(b);
}
要点:(1)创建的路径可以存在,也可以不存在(2)一定方法要是mkdirs();最后的s千万不能少,不然就不能创建多级目录了。
实例:如果创建的文件路径已经存在,那么返回false,不存在,则返回true
优点:创建多级目录的情况下,效率会很高。
File类的删除文件以及删除目录
public static void deletefile(){
// File file = new File("e:/a/b/c/d");
File file = new File("e:/a.txt");
boolean b= file.delete();
System.out.println(b);
}
特性:删除文件有风险,一旦删除,就永远不存在。因为删除是不走回收站的,相当于在删除文件时执行的时shift+delete键来完全删除文件。所以删除有风险,执行需谨慎。
一般的删除文件(回收站中会保留删除的文件)
4.FILE类判断文件是否存在
public static void isExitfile(){
File file = new File("E:\\JAVASE");
boolean b = file.exists();
System.out.println(b);
}
要点:判断文件是否存在,其中大小写字母可以互相变化,即上述的“E:\JAVASE”也可以写成“E:\javase“返回的值跟之前的是一样的
实例:如果存在就放回true,不存在就返回false
5.FILE类获取文件的名字
public static void testGetName(){
File file = new File("E:\\JAVASE");
String name = file.getName();
System.out.println(name);
}
要点:返回的是最后一个路径的值
实例:上述的例子,得到name的值为”JAVASE"
6.FILE类获取文件的绝对路径
public static void testGetAbsoluteFile(){
File file = new File("bin");
File absoluteFile = file.getAbsoluteFile();
System.out.println(absoluteFile);
}
要点:返回的是一个文件的绝对路径。不存在则在该文件夹下创建一个。如果对应的路径存在,就返回该绝对路径
实例:上述因为是在javaSE目录下创建的,故而输出的是“E:\javaSE\bin”
7.FILE类获取一个文件夹下的所有文件
public static void findListfile(){
File file = new File("c:");
File[] fileArray = file.listFiles();
System.out.println(fileArray.length);
for(File file1 : fileArray){ //范围for打印输出
System.out.println(file1);
}
}
要点:listFiles()函数返回的是一个File类型的数组;运用范围for打印数组中的每一个元素
实例:上述打印的是我c盘下的所有文件夹的名字(c盘的根目录下不能创建单独文件)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bz2lEHDN-1665814543502)(C:\Users\李小宝\AppData\Roaming\Typora\typora-user-images\image-20221015140702332.png)]
8.FILE类打印一个文件夹下的所有特定文件
public static void testListFilesFilter(){
File file = new File("c:/a");
File[] fileArray = file.listFiles(new MyFileFilter());
System.out.println(fileArray.length);
for(File file1 : fileArray){ //范围for打印输出
System.out.println(file1);
}
}
要点:listFiles的方法中可以传入一个对象(本例中是过滤器对象),做出筛选
public class MyFileFilter implements FileFilter {
@Override
public boolean accept(File filename) {
return filename.getName().endsWith(".docx");
}
}
要点:实现FileFilter接口中的方法accept(),返回满足筛选条件筛出来的文件
实例:本例中筛选出来的是后缀名为.docx的文件
9.FILE类打印一个文件夹下的所有文件(包括子文件夹)
public static void getDir(File srcDir){
System.out.println(srcDir);
File[] fileArray = srcDir.listFiles();
for(File file1 : fileArray){
if(file1.isDirectory()){
getDir(file1);
}else{
System.out.println(file1);
//file1.delete();如果这里执行了后果将...
}
}
}
public static void main(String[] args) {
getDir(new File("c:/Program Files"));
}
要点:算法主要的思想是递归,遇到文件夹则需要再进入文件夹下的文件,一直到没有文件的时候才行
注意:不要delete
if(file1.isDirectory()){
getDir(file1);
}else{
System.out.println(file1);
//file1.delete();如果这里执行了后果将...
}
上面程序运行的主函数
public class FileDemo(){
public static void main(String[] args){
//实例
getDir(new File(""));
}
}