Java基础之File类详解

简介: Java基础之File类详解

构造方法

构造方法摘要

image.png

//File类的构造函数--练习
private static void show02(){
     File file= new File("F:\\04Java\\19java","Hello.java");
     System.out.println(file);
}
private static void show01(){
   File f1= new File("F:\\04Java\\19java");
   System.out.println(f1);//重写了ToString()方法
   File f3= new File("b.txt");
   System.out.println(f3);
}
private static void show03(){
     File file=new File("F:\\04Java\\19ava");
     File newFile = new File(file,"Hello.java");
     System.out.println(newFile);
}

主要成员方法

获取的方法

image.png

//获取文件绝对路径
private static void show04() {
     File file=new File("F:\\04Java\\19java");
     File absoluteFile=file.getAbsoluteFile();//返回File对象的绝对路径
     System.out.println(absoluteFile);
     File file2=new File("a.txt");
     File absoluteFile2=file2.getAbsoluteFile();//返回File对象的绝对路径
     System.out.println(absoluteFile2);
     System.out.println("____________________________");
}
//file1.getName()  获取最后一个路径名
private static void show02(){
     File file=new File("F:\\04Java\\19java");
     String name=file.getName();//最后的路径名
     System.out.println(name);
     File file1=new File("F:\\04Java\\19java\\小小张自由");
     String name1=file1.getName();//最后的路径名
     System.out.println(name1);
}
//file.getPath()  构造函数中传递什么值,就返回什么值
private static void show01(){
     File file=new File("F:\\04Java\\19java");
     String path=file.getPath();//传递的参数是什么,返回值就是什么
     System.out.println(path);
     File file1=new File("b.txt");
     String path1=file1.getPath();
     System.out.println(path1);
}
 //file.length() 获取文件的大小
private static void show03(){
     File file=new File("F:\\迅雷下载\\AirtestIDE-win-1.2.6.zip");
     long length=file.length();//文件名的大小,路径错误则为0
     System.out.println(length);//单位字节
}

判断的方法

image.png

//用于判断构造函数中给定的路径是否为目录、文件
public static void main(String[] args){
  File file = new File("F:\\04Java\\19java");
  System.out.println(file.exists());//判断文件名是否存在
  System.out.println(file.isDirectory());//判断是否以文件夹结尾
  System.out.println(file.isFile());//判断是否以文件结尾
}

创建删除的方法

image.png

       

//File类中CreateNewFile()方法只能新建文件,创建成功true
private static void show01()throws IOException{
    File file=new File("F:\\04Java\\19java\\99.txt");
    boolean newFile=file.createNewFile();//只能新建文件,创建成功true
    System.out.println(newFile);
}
//File类中Delete()方法
private static void show03(){
    File file=new File("F:\\04Java\\19java\\HelloJava");
    boolean delete=file.delete();//可以删除文件夹只能是空文件夹
    System.out.println(delete);
    File file1=new File("F:\\04Java\\19java\\99.txt");
    boolean delete1=file1.delete();//可以删除文件
    System.out.println(delete1);
    }
//File类中mkdir()和mkdirs()的方法创建单级、多级目录
private static void show02(){
    File file=new File("F:\\04Java\\19java\\HelloJava");
    boolean mkdir=file.mkdir();//创建单级目录
    System.out.println(mkdir);
    File file1=new File("F:\\04Java\\19java\\Hello\\Java");
    boolean mkdirs=file1.mkdirs();//创建多级目录
    System.out.println(mkdirs);
}

目录的遍历

image.png

//file.listFiles();方法返回值是一个File[]
private static void show02(){
    File file=new File("F:\\04Java\\19java");
    File[]files=file.listFiles();
    for(File file1:files){
        System.out.println(file1);
    }
}
//file.list();方法返回值是一个String[]
private static void show01(){
    File file=new File("F:\\04Java\\19java");
    String[] list=file.list();
    System.out.println(list);//地址值
    for(String i:list){
        System.out.println(i);
    }
}

案例-文件搜索

    1. 搜索后缀名为.pdf的文件


    2. 目录搜索,无法判断多少级目录,所以使用递归,遍历所有目录。


    3. 遍历目录时,获取的子文件,通过文件名称,判断是否符合条件。


public class DiGuiDemo3 { 
    public static void main(String[] args) {
        // 创建File对象 
        File dir = new File("E:\\书籍"); 
        // 调用打印目录方法 
        printDir(dir); 
    }
    public static void printDir(File dir) { 
        // 获取子文件和目录 
        File[] files = dir.listFiles(); 
        // 循环打印 
        for (File file : files) { 
            if (file.isFile()) { 
                // 是文件,判断文件名并输出文件绝对路径 
                if (file.getName().endsWith(".PDF")) {
                    System.out.println("文件名:" + file.getAbsolutePath());
                }
            }else{ 
                // 是目录,继续遍历,形成递归 
                printDir(file); 
            } 
        } 
    } 
}

案例-文件搜索(高级玩法)

 使用FileFilter接口或者FilenameFilter接口,是File的过滤器。该接口方法的参数是FIle类的对象。接口中只有一个方法。


//Sun公司封装的两个文件过滤的接口
public interface FilenameFilter {
    boolean accept(File dir, String name);
}
public interface FileFilter {
    boolean accept(File pathname);
}

下面任意一种方式都可以实现文件搜索的功能:方式一使用了 FileFilter接口,方式二使用了FilenameFilter接口。


以下三种玩法一个使用了接口的实现类,一个使用了Lambda表达式、一个使用了匿名内部类


public static void main(String[] args) {
    File file=new File("E:\\书籍");
    //System.out.println(file);
    getAllFile(file);
}
//以下是三种玩法
public static void getAllFile(File file) {
   //方式一、使用FIleFilter接口的实现类
   File[] files = file.listFiles(new Demo09FileFilterImpl());//实现了FIleFilter接口
   //方式1. 使用Lambda表达式
   File[] files = file.listFiles((pathname)->{
         return pathname.getName().toLowerCase().endsWith(".pdf");//
   });
   //方式二、使用FilenameFilter
   File[] files =file.listFiles(new FilenameFilter() {
        @Override     //两个路径
        public boolean accept(File dir, String name) {
            return new File(dir,name).isDirectory()|| name.toLowerCase().endsWith("pdf");
         }
     });
}
相关文章
|
3天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
28 3
|
1天前
|
安全 Java 程序员
|
1天前
|
Java
Java Class类
Java Class类
8 0
|
8天前
|
Java 编译器
Java Character 类
4月更文挑战第13天
|
9天前
|
存储 Java
Java基础教程(7)-Java中的面向对象和类
【4月更文挑战第7天】Java是面向对象编程(OOP)语言,强调将事务抽象成对象。面向对象与面向过程的区别在于,前者通过对象间的交互解决问题,后者按步骤顺序执行。类是对象的模板,对象是类的实例。创建类使用`class`关键字,对象通过`new`运算符动态分配内存。方法包括构造函数和一般方法,构造函数用于对象初始化,一般方法处理逻辑。方法可以有0个或多个参数,可变参数用`类型...`定义。`this`关键字用于访问当前对象的属性。
|
12天前
|
Java Shell
Java 21颠覆传统:未命名类与实例Main方法的编码变革
Java 21颠覆传统:未命名类与实例Main方法的编码变革
13 0
|
12天前
|
Java
Java 15 神秘登场:隐藏类解析未知领域
Java 15 神秘登场:隐藏类解析未知领域
16 0
|
14天前
|
安全 Java
append在Java中是哪个类下的方法
append在Java中是哪个类下的方法
23 9
|
15天前
|
JavaScript Java 测试技术
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
30 0
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
|
15天前
|
存储 安全 Java
java多线程之原子操作类
java多线程之原子操作类