博客
关于我
java.io.File 类的相关方法详细说明和部分测试代码
阅读量:725 次
发布时间:2019-03-21

本文共 3430 字,大约阅读时间需要 11 分钟。

Java.io.File 类 - 完全指南

File 类是Java中用于处理文件和目录的高级方法,适用于任何操作系统。这一类将文件和目录的路径名抽象化,使其可以在不同系统中无缝运行。

一、静态修饰符

File 类提供了一些与操作系统相关的静态成员变量,方便开发人员处理路径。

  • public static final String pathSeparator:路径分隔符,可根据系统不同切换。例如:c:\text 会被自动转换为适用于不同系统的路径格式。

  • public static final char pathSeparatorChar;:同上,但适用于单个字符处理。

  • public static final String separator;:默认文件名分隔符,例如:/text

  • public static final char separatorChar;:默认文件名分隔符对应的字符。

通过使用这些常量,可以在项目中统一处理不同操作系统的路径,灵活性极高。

二、构造方法

File 类提供多种构造方式来创建新的File实例:

  • File(String pathname)

    接受一个路径字符串,路径可以是相对或绝对,也可以是存在或不存在的文件。

    示例:

    File file = new File("F:/project/datastructuresandalgorithms/IODemo/a.txt");File file2 = new File("a.txt");
  • File(String parent, String child)

    通过父路径和子路径创建新的File对象。适合灵活操作文件树的路径。

  • File(File parent, String child)

    通过父File和子路径创建新实例,更适合对已有路径进行操作。

  • File(String parent, String child)

    创建一个Hierarchical File对象,通常用于复杂路径。

  • 三、获取方法

    File 类提供四种主要的获取方法:

    • public String getAbsolutePath()

      返回该File对象的绝对路径,无论原始路径是相对还是绝对。

    • public String getPath()

      返回原始提供的路径字符串,保留相对或绝对属性。

    • public String getName()

      返回该File对象表示的文件或目录名称。

    • public int length()

      返回文件大小(以字节为单位),文件夹返回0。

    示例:

    File file = new File("F:/project/datastructuresandalgorithms/IODemo/a.txt");System.out.println(file.getAbsolutePath());  // 输出完整绝对路径System.out.println(file.getPath());      // 输出原始路径字符串System.out.println(file.getName());      // 输出文件名或目录名System.out.println(file.length());       // 文件尺寸以字节计数

    四、判断功能的方法

    File 类还提供了一系列判断方法:

    • public boolean exists()

      检验路径所指的文件或目录是否存在。

    • public boolean isDirectory()

      检验该File对象是否为目录。

    • public boolean isFile()

      检验该File对象是否为普通文件。

    • public boolean isHidden()

      检验该文件是否为隐藏文件/目录。

    示例:

    File file = new File("F:/project/datastructuresandalgorithms/IODemo/a.txt");System.out.println(file.exists());           // 是否存在?System.out.println(file.isDirectory());      // 是否为目录?System.out.println(file.isFile());           // 是否为文件?System.out.println(file2.isDirectory());      // 判断另一个是否为目录System.out.println(file2.isFile());           // 检查是否普通文件

    五、创建和删除功能的方法

    File 类支持文件和目录的操作:

    • public boolean createNewFile()

      创建一个空文件。返回成功(true)/失败(false)。

    • public void delete()

      删除该File对象所表示的文件或文件夹。文件夹必须空空才能成功。

    • public boolean mkdir()

      创建一个单层文件夹。文件夹已存在则失败。

    • public boolean mkdirs()

      创建包括父目录在内的多级文件夹。忽略不存在的父目录则抛出异常。

    示例:

    File file = new File("F:/project/datastructuresandalgorithms/IODemo/a.txt");System.out.println(file.createNewFile());   // 创建新文件File dir = new File("F:/project/datastructuresandalgorithms/IODemo");System.out.println(dir.mkdirs());        // 创建包含父目录的新夹

    六、File 类目录的遍历

    要对文件或文件夹进行批量操作,可以使用以下方法:

    • public String[] list(FilenameFilter filter)

      根据自定义过滤器返回指定路径下的文件和目录名数组。

    • public File[] listFiles()

      返回指定路径下的所有文件File对象数组,排除目录。

    过滤器实现了灵活的文件筛选,可以实现特定文件类型或扩展名的筛选。

    ##七、过滤器的使用

    使用自定义过滤器可以实现更复杂的文件筛选。你也可以实现自己的FilenameFilterFileFilter接口。

    示例:

    File dir = new File("F:/project/datastructuresandalgorithms/IODemo");File[] files = dir.listFiles(new FileFilter() {    @Override    public boolean accept(File pathname) {        return pathname.isDirectory() || pathname.getName().toLowerCase().endsWith(".java");    }});

    这将筛选出所有符合条件的文件和目录。

    八、FilenameFilter 文件名过滤器的使用

    使用FilenameFilter接口,你可以更加精确地筛选文件名:

    File dir = new File("F:/project/datastructuresandalgorithms/IODemo");File[] files = dir.listFiles(new FilenameFilter() {    @Override    public boolean accept(File dir, String name) {        return new File(dir, name).isDirectory() || name.toLowerCase().endsWith(".java");    }});

    这一方式适用于特定文件扩展名或文件类型的筛选。


    通过以上方法,File 类为Java程序员提供了对文件系统操作的全面控制,无论是单个文件操作还是批量遍历,都能轻松实现。在实际开发中,合理使用这些功能可以显著提高工作效率。

    转载地址:http://ittgz.baihongyu.com/

    你可能感兴趣的文章
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
    查看>>
    NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
    查看>>
    NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
    查看>>
    NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
    查看>>
    nifi使用过程-常见问题-以及入门总结---大数据之Nifi工作笔记0012
    查看>>
    NIFI分页获取Mysql数据_导入到Hbase中_并可通过phoenix客户端查询_含金量很高的一篇_搞了好久_实际操作05---大数据之Nifi工作笔记0045
    查看>>
    NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
    查看>>
    Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
    查看>>
    NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
    查看>>
    NIFI大数据进阶_Json内容转换为Hive支持的文本格式_操作方法说明_01_EvaluteJsonPath处理器---大数据之Nifi工作笔记0031
    查看>>
    NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka消费者处理器_来消费kafka数据---大数据之Nifi工作笔记0037
    查看>>
    NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka生产者---大数据之Nifi工作笔记0036
    查看>>
    NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
    查看>>