使用IO操作文件

一、File类操作文件或目录

1.File操作文件或目录

java.io.File 类是文件和目录 路径名 的抽象表示,主要用于文件和目录的创建、查找和删除等操作。

Java虚拟机中的一个 File 实例表示一个路径,这个路径可能对应一个文件或一个目录。
File 类的实例所表示的路径,可能存在于磁盘上,也可能在磁盘上根本不存在。

public class File
implements Serializable, Comparable<File>

File 类是不可变的; 也就是说,一旦创建,由 File 对象表示的抽象路径名永远不会改
变。

private final String path; // 用于存储file实例表示的路径

File类提供了用于操作文件或目录的方法,但并不支持访问文件的内容。

2.常量

File 类提供了 4 个表示分隔符的常量:
在这里插入图片描述
不同的系统平台下,这四个常量的取值也不相同。

  • 在Windows 平台下
    - pathSeparator 和 pathSeparatorChar 对应的是 ;
    - separator 和 separatorChar 对应的是 \
  • Unix / Linux / MAC OS X 平台下
    - pathSeparator 和 pathSeparatorChar 对应的是 :
    - separator 和 separatorChar 对应的是 /

Windows 下文件路径各层级之间使用 \ 分隔,在代码中 \ 需要转义(使用 \ 转义),
当然还有另外一种方法来分隔,就是使用 / 来分隔。

3.构造方法

File 类提供了 4 个构造方法用于创建File实例:
在这里插入图片描述

//通过给定路径字符串创建实例
File file = new File("D:\\斗破苍穹.txt");
File file1 = new File("D:\\temp","凡人修仙传.txt");
//fod 表示不知道是文件还是文件夹
File fod = new File("D:\\temp");
File file2 = new File(fod, "吞噬星空.txt");

4.实例方法

判断是否存在

File 类中的 exists 方法用于判断File实例所表示的路径是否在磁盘上存在:

public boolean exists()

File实例所表示的路径在磁盘上存在时返回 true ,否则返回 false

public static void main(String[] args) {
File fod = new File("d:\\temp");
System.out.println("d:\\temp is exist --> " + fod.exists());
File file = new File("d:\\斗破苍穹.txt");
System.out.println("d:\\斗破苍穹.txt is exist --> " + file.exists());
}

判断是否是文件

File 类中的 isFile 方法用于判断File实例所表示的路径是否是个文件:

public boolean isFile()

File实例所表示的路径在磁盘上 存在 并且 是个文件 时返回 true ,否则返回 false

package com.itlaobing.demo;
import java.io.File;
public class FileTest2 {
public static void main(String[] args) {
File fod = new File("d:\\temp");
System.out.println("d:\\temp is exist --> " + fod.exists()); //true
File file = new File("d:\\斗破苍穹.txt");
System.out.println("d:\\斗破苍穹.txt is exist --> " + file.exists());//false
System.out.println("d:\\\\temp isFile --> " + fod.isFile());//false
System.out.println("d:\\斗破苍穹.txt isFile --> " + file.isFile());//false
}
}

判断是否是目录

File类中的 isDirectory 方法用于判断File实例所表示的路径是否是个目录:

public boolean isDirectory()

File实例所表示的路径在磁盘上 存在 并且 是个目录 时返回 true ,否则返回 false

File fod = new File("d:\\temp");
System.out.println("d:\\temp is Directory --> " + fod.isDirectory());//true

判断是否是隐藏文件

File类中的 isHidden 方法用于判断File实例所表示的路径是否是隐藏目录或隐藏文件:

public boolean isHidden()

当File实例所表示的路径是个隐藏目录或隐藏文件时返回 true ,否则返回 false 。

File fod = new File("d:\\temp");
System.out.println("d:\\temp is Hidden --> " + fod.isHidden());//false
File file2 = new File("d:/Mindjet MindManager_2016_v16.0.152_Key.zip");
System.out.println(file2.isHidden());//true

判断是否是绝对路径

  • 绝对路径:从根路径开始的路径
  • 相对路径:相对于文件本身的路径
    File类中的 isAbsolute 方法用于判断File实例所表示的路径是否是 绝对路径 :
public boolean isAbsolute()

File实例所表示的路径是绝对路径时返回true,否则返回 false

获取路径及名称

File类提供了获取File实例所表示路径对应的目录或文件的名称:

public String getName()

同时也提供了获取File实例所表示路径的方法(以字符串形式返回):

public String getPath()

获取File实例所表示路径的绝对路径

public String getAbsolutePath()

二、文件过滤器

java.io包中提供了用于对文件或目录进行过滤的接口:

  • java.io.FilenameFilter
  • java.io.FileFilter
    结合File类提供的方法可以实现对文件或目录的过滤:
public String[] list(FilenameFilter filter)
public File[] listFiles(FilenameFilter filter)
public File[] listFiles(FileFilter filter)

接下来,我们将结合 File 类中的方法讲解 FilenameFilterFileFilter 的用法。

1.FilenameFilter

通过 FilenameFilter 接口的实现类的实例可实现根据文件或目录名称对文件或目录进行过
滤。
FilenameFilter 接口中定义了一个 accept 方法用于实现对文件或目录的过滤:

boolean accept(File dir, String name)

accept 方法的参数中:

  • 第一个File类型参数类型的参数表示被筛选的文件或目录所在的目录。
  • 第二个String类型的参数表示被筛选的文件或目录的名称。
    仅当 accept 方法返回 true 时,被筛选的文件会被保留在筛选后的文件列表中。
public static void main(String[] args) {
//文件名过滤器
FilenameFilter fileter = new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.indexOf(".txt") >= 0;
}
};
File file = new File("d:/temp");
//所有的文件
String[] strs = file.list();
//过滤后的文件
String[] fileNames = file.list(fileter);
System.out.println(Arrays.toString(strs));
System.out.println(Arrays.toString(fileNames));
}

2.FileFilter

通过 FileFilter 接口的实现类的实例可实现对文件或目录的过滤,不仅可以通过文件名称
或目录名称过滤,也可以通过文件长度(体积)、访问时间等属性来过滤。
FileFilter 接口中定义了一个 accept 方法用于实现对文件或目录的过滤:

boolean accept(File fod)
  • File 类型的参数表示被筛选的文件或目录
  • 仅当 accept 方法返回 true 时,被筛选的文件或目录会保留在筛选后的列表中
public static void main(String[] args) {
FileFilter filter = new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.lastModified() > 1572080255401L;
}
};
File file = new File("d:/temp");
File[] files = file.listFiles(filter);
System.out.println(Arrays.toString(file.listFiles()));
System.out.println(Arrays.toString(files));
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/107966.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式面试/笔试C相关总结

1、存储 单片机端编译后分为code ro rw zi几个区域&#xff0c;其中code是执行文件&#xff0c;ro(read only)只读区域&#xff0c;存放const修饰常量、字符串。rw(read write)存放已初始化变量。zi存放未初始化变量。编译完成后bin大小为coderorw。运行时所需内存为rwzi。 在电…

SQL7 查找年龄大于24岁的用户信息

描述 题目&#xff1a;现在运营想要针对24岁以上的用户开展分析&#xff0c;请你取出满足条件的设备ID、性别、年龄、学校。 用户信息表&#xff1a;user_profile iddevice_idgenderageuniversityprovince12138male21北京大学Beijing23214male复旦大学Shanghai36543female20…

C语言数组和指针笔试题(二)(一定要看)

目录 字符数组二例题1例题2例题3例题4例题5例题6例题7总结 字符数组三例题1例题2例题3例题4例题5例题6例题7 字符数组二 char arr[] {a,b,c,d,e,f} 1:printf("%d\n", strlen(arr)); 2:printf("%d\n", strlen(arr0)); 3:printf("%d\n", strlen(…

Promethues(五)查询-PromQL 语言-保证易懂好学

一、介绍 普罗米修斯提供了一种称为PromQL&#xff08;普罗米修斯查询语言&#xff09;的函数式查询语言&#xff0c;允许用户实时选择和聚合时间序列数据。 表达式的结果可以显示为图形&#xff0c;在 Prometheus 的表达式浏览器中显示为表格数据&#xff0c;也可以通过 HTT…

Linux HTTP协议

目录 1.浏览器与服务器通信过程2.HTTP请求报头&#xff08;1&#xff09;HTTP的请求报头结构&#xff08;2&#xff09;HTTP的请求方法 3.HTTP应答报头&#xff08;1&#xff09;HTTP的应答报头结构&#xff08;2&#xff09; HTTP的应答状态 1.浏览器与服务器通信过程 浏览器…

PaddleOCR学习笔记1-初步尝试

尝试使用PaddleOCR方法&#xff0c;如何使用自定义的模型方法&#xff0c;参数怎么配置&#xff0c;图片识别尝试简单提高识别率方法。 目前仅仅只是初步学习下如何使用PaddleOCR的方法。 一&#xff0c;测试识别图片&#xff1a; 1.png : 正确文本内容为“哲学可以帮助辩别现…

领域驱动设计:领域模型与代码模型的一致性

文章目录 领域对象的整理从领域模型到微服务的设计领域层的领域对象应用层的领域对象 领域对象与微服务代码对象的映射典型的领域模型非典型领域模型 DDD 强调先构建领域模型然后设计微服务&#xff0c;以保证领域模型和微服务的一体性&#xff0c;因此我们不能脱离领域模型来谈…

HarmonyOS Codelab 优秀样例——溪村小镇(ArkTS)

一、介绍 溪村小镇是一款展示溪流背坡村园区风貌的应用&#xff0c;包括园区内的导航功能&#xff0c;小火车行车状态查看&#xff0c;以及各区域的风景展览介绍&#xff0c;主要用于展示HarmonyOS的ArkUI能力和动画效果。具体包括如下功能&#xff1a; 打开应用时进入启动页&a…

EasyPHP-Devserver-17安装和配置mantisBT

文章目录 1、准备工作2、安装easyphp2.1 http://127.0.0.1 无法访问 3、安装mantisBT和phpMyAdmin3.1 配置浏览器的访问url和端口号&#xff08;配置局域网内可访问&#xff09;3.2 安装mantis 4、Administrator 注册新用户时设置登录密码5、附件上传6、邮件配置 文章参考自&am…

IntelliJ IDEA远程调试:使用IDEA Remote Debug进行高效调试的指南

引言 在开发分布式系统时&#xff0c;调试是一个重要但复杂的环节。开发者通常需要跨越多个服务、模块和线程来追踪和解决问题。在没有远程调试的情况下&#xff0c;许多开发者会在代码中添加各种日志语句&#xff0c;然后重新部署和上线来调试。这种方法不仅费时&#xff0c;…

Redis——其他数据类型介绍

概要介绍 Redis中有10种不同的数据类型。之前的blog中介绍了Redis中常见的五大数据类型&#xff1a;String&#xff0c;List&#xff0c;Hash&#xff0c;Set&#xff0c;ZSet。而Redis中还有许多其他的数据类型&#xff0c;一般在特定的场景中使用 Stream 首先介绍一下什么…

bootstrap-datepicker实现只能选择每一年的某一个月份

1、问题描述 最近碰到一个需求&#xff0c;要求日期控件选择的时候&#xff0c;只能选择某一年的1月份。 2、解决方法 使用setStartDate()和setEndDate()函数对日期选择框进行范围限制。 3、我的代码 【免费】bootstrap-datepicker实现只能选择每一年的某一个月份资源-CSDN文库…