【java 文件管理与IO流】文件管理File类

一、简单介绍

  • 程序经常需要访问文件和目录,读取文件信息或写入信息到文件,在 Java 语言中对文件的读写是通过 I/O 流技术实现的。
  • Java 语言使用 File 类对文件和目录进行操作,查找文件时需要实现 FilenameFilter 或FileFilter 接口。另外,读写文件内容可以通过 FileInputStream、FileOutputStream、FileReader和 FileWriter 类实现,它们属于 I/O 流。这些类和接口全部来源于 java.io 包。
  • File 类表示一个与平台无关的文件或目录。File 类名很有欺骗性,初学者会误认为是File 对象只是一个文件,但它也可能是一个目录。

二、File常用方法

1. 构造方法

  • File(String path):如果 path 是实际存在的路径,则该 File 对象表示的是目录;如 果 path 是文件名,则该File 对象表示的是文件。
  • File(String path, String name):path 是路径名,name 是文件名。
  • File(File dir, String name):dir 是路径对象,name 是文件名。

2、获得文件名

  • String getName( ):获得文件的名称,不包括路径。
  • String getPath( ):获得文件的路径。
  • String getAbsolutePath( ):获得文件的绝对路径。
  • String getParent( ):获得文件的上一级目录名。

    3、文件属性测试

  • boolean exists( ):测试当前 File 对象所表示的文件是否存在。
  • boolean canWrite( ):测试当前文件是否可写。
  • boolean canRead( ):测试当前文件是否可读。
  • boolean isFile( ):测试当前文件是否是文件。
  • boolean isDirectory( ):测试当前文件是否是目录。

    4、文件操作

  • long lastModified( ):获得文件最近一次修改的时间。
  • long length( ):获得文件的长度,以字节为单位。
  • boolean delete( ):删除当前文件。成功返回 true,否则返回 false。
  • boolean renameTo(File dest):将重新命名当前 File 对象所表示的文件。成功返回true,否则返回
    false。

    5、目录操作

  • boolean mkdir( ):创建当前 File 对象指定的目录。
  • String[] list():返回当前目录下的文件和目录,返回值是字符串数组。
  • String[] list(FilenameFilter filter):返回当前目录下满足指定过滤器的文件和目录,参数是实现 FilenameFilter 接口对象,返回值是字符串数组。
  • File[] listFiles():返回当前目录下的文件和目录,返回值是 File 数组。
  • File[] listFiles(FilenameFilter filter):返回当前目录下满足指定过滤器的文件和目录,参数是实现 FilenameFilter 接口对象,返回值是 File 数组。
  • File[] listFiles(FileFilter filter):返回当前目录下满足指定过滤器的文件和目录,参数是实现 FileFilter 接口对象,返回值是 File 数组。

6、过滤器接口
对目录操作有两个过滤器接口:FilenameFilter 和 FileFilter。它们都只有一个抽象方法accept,

FilenameFilter 接口中的 accept 方法如下:

  • boolean accept(File dir, String name):测试指定 dir 目录中是否包含文件名为 name 的文件。

FileFilter 接口中的 accept 方法如下:

  • boolean accept(File pathname):测试指定路径名是否应该包含在某个路径名列表中。

7、实例代码:

从指定的目录中F:\PDF电子书籍\列出文件信息
这里写图片描述

import java.io.File;
import java.io.FilenameFilter;


public class FileOperator {
    public static void main(String[] args) {
//        用File对象表示一个目录
        File dir=new File("F:\\PDF电子书籍\\");

        Filter filter=new Filter("pdf");
        System.out.println("PDF文件目录:" + dir);

        // 列出目录F:\PDF电子书籍\下,文件后缀名为PDF的所有文件
        String files[] = dir.list(filter);

        // 遍历文件列表
        for (String fileName : files) {
        // 为目录F:\PDF电子书籍\下的文件或目录创建File对象
            File f = new File(dir, fileName);
        // 如果该f对象是文件,则打印文件名
            if (f.isFile()) {
                System.out.println("文件名:" + f.getName());
                System.out.println("文件绝对路径:" + f.getAbsolutePath());
                System.out.println("文件路径:" + f.getPath());
            } else {
                System.out.println("子目录:" + f);
            }
        }
    }

}



// 自定义基于文件扩展名的文件过滤器
class Filter implements FilenameFilter {
    // 文件扩展名
    String extent;
    // 构造方法
    Filter(String extent) {
        this.extent = extent;
    }
//    @Override
    public boolean accept(File dir, String name) {
// 测试文件扩展名是否为extent所指定的
        return name.endsWith("." + extent);
    }
}
PDF文件目录:F:\PDF电子书籍
文件名:628498 Spark大数据分析核心概念技术及实践OCR.pdf
文件绝对路径:F:\PDF电子书籍\628498 Spark大数据分析核心概念技术及实践OCR.pdf
文件路径:F:\PDF电子书籍\628498 Spark大数据分析核心概念技术及实践OCR.pdf
文件名:630445 R语言数据挖掘方法及应用(薛薇2016) - 完整版.pdf
文件绝对路径:F:\PDF电子书籍\630445 R语言数据挖掘方法及应用(薛薇2016) - 完整版.pdf
文件路径:F:\PDF电子书籍\630445 R语言数据挖掘方法及应用(薛薇2016) - 完整版.pdf
文件名:631359+Python数据分析基础.pdf
文件绝对路径:F:\PDF电子书籍\631359+Python数据分析基础.pdf
文件路径:F:\PDF电子书籍\631359+Python数据分析基础.pdf
文件名:631360 Python数据抓取技术与实战_14097412.pdf
文件绝对路径:F:\PDF电子书籍\631360 Python数据抓取技术与实战_14097412.pdf
文件路径:F:\PDF电子书籍\631360 Python数据抓取技术与实战_14097412.pdf
文件名:631362+机器学习实践应用+带书签目录+高清完整版.pdf
文件绝对路径:F:\PDF电子书籍\631362+机器学习实践应用+带书签目录+高清完整版.pdf
文件路径:F:\PDF电子书籍\631362+机器学习实践应用+带书签目录+高清完整版.pdf
文件名:632992+白话深度学习与TensorFlow.pdf
文件绝对路径:F:\PDF电子书籍\632992+白话深度学习与TensorFlow.pdf
文件路径:F:\PDF电子书籍\632992+白话深度学习与TensorFlow.pdf
文件名:632997 LINUX企业应用案例精解 第2版 李晨光.pdf
文件绝对路径:F:\PDF电子书籍\632997 LINUX企业应用案例精解 第2版 李晨光.pdf
文件路径:F:\PDF电子书籍\632997 LINUX企业应用案例精解 第2版 李晨光.pdf
文件名:Java从小白到大牛精简版.pdf
文件绝对路径:F:\PDF电子书籍\Java从小白到大牛精简版.pdf
文件路径:F:\PDF电子书籍\Java从小白到大牛精简版.pdf
文件名:深度学习.pdf
文件绝对路径:F:\PDF电子书籍\深度学习.pdf
文件路径:F:\PDF电子书籍\深度学习.pdf

Process finished with exit code 0
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页