zl程序教程

您现在的位置是:首页 >  Java

当前栏目

java---File类笔记(简单介绍)

2023-02-18 16:34:00 时间

文章目录

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(""));
	}
}