使用IO操作文件

news2025/1/20 1:44:37

一、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.coloradmin.cn/o/1007596.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文阅读 - Outlier detection in social networks leveraging community structure

目录 摘要 1. Introduction 2. Related works 3. Preliminaries 3.1. 模块化度量 3.2. Classes of outliers 3.2.1. 点异常 3.2.2. Contextual anomalies 3.2.3. Collective anomalies 3.3. Problem definition 3.4. Outliers score 4. Methodology 4.1. Proposed appr…

ESP32编译出现Cannot establish a connection to the component registry.报错

前言 &#xff08;1&#xff09;在对ESP32开发使用的时候&#xff0c;很容易踩坑&#xff0c;但是总是找不到问题所在。很多时候只能去外网查资料&#xff0c;语言不通&#xff0c;而且有墙特别的难受。就算能够找到乐鑫的工作人员询问&#xff0c;也整个过程也感觉有些许麻烦。…

Vue2电商前台项目——完成Detail详情页模块业务

Vue2电商前台项目——完成Detail详情页模块业务 Vue基础知识点击此处——Vue.js 文章目录 Vue2电商前台项目——完成Detail详情页模块业务一、项目开发步骤二、配置路由规则滚动行为1、配置路由规则2、滚动行为 三、请求详情页数据并展示数据1、写接口2、写Vuex仓库3、派发acti…

ESP32S3的ESP_LOGx()控制台输出详细介绍

前言 &#xff08;1&#xff09;接触一款新的芯片&#xff0c;第一步要么是点灯&#xff0c;要么是进行串口的输出。现在我将介绍如何快速的利用ESP32S3进行控制台的日志输出。 &#xff08;2&#xff09;对于ESP32进行日志输出还是相对简单的&#xff0c;不像其他芯片需要配置…

三维模型3DTile格式轻量化压缩的遇到常见问题与处理方法分析

三维模型3DTile格式轻量化压缩的遇到常见问题与处理方法分析 三维模型的轻量化压缩是一项技术挑战&#xff0c;特别是在处理复杂的3DTile格式时。下面列举了一些处理过程中可能遇到的常见问题以及相应的处理方法&#xff1a; 模型精度损失&#xff1a;在进行压缩处理时&#x…

C语言入门Day_19 初识函数

目录 1.函数的定义 2.函数的调用 3.易错点 4.思维导图 前言&#xff1a; printf()我们已经很熟悉了&#xff0c;它有一个特定的功能&#xff0c;就是在屏幕上输出一行文字。之前的课程我们都称呼printf()为一个功能&#xff0c;实际上ta在编程中有个特定的名字——函数。 …

IO和进程day07(IPC、管道、信号)

今日任务 1.代码&#xff08;一次只能发一次消息&#xff0c;不然会存在一些小问题&#xff0c;在接受消息之后会立刻输出上次的第二次发送的消息&#xff09; read.c文件&#xff08;先读取消息&#xff09; #include <stdio.h> #include <string.h> #include &…

org.apache.ibatis.binding.BindingException: Invalid bound statement

在学习黑马头条遇到的关于使用mapper执行方法出现的错误 完整报错信息为&#xff1a;org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.heima.wemedia.mapper.WmNewsMaterialMapper.saveRelations 译为&#xff1a;无效的绑定语句&…

Ubuntu 23.10/24.04 LTS 放弃默认使用 snap 版 CUPS 打印堆栈

导读Canonical 的开发者、OpenPrinting 的项目负责人 Till Kamppeter 今年 5 月表示&#xff0c;计划在 Ubuntu 23.10&#xff08;Mantic Minotaur&#xff09;上默认使用 Snap 版本的 CUPS 打印堆栈。 不过经过数月的测试&#xff0c;官方放弃了这项决定。Ubuntu 23.10&#x…

MySQL面试题——隔离级别相关面试题

隔离级别相关面试题 MySQL事务隔离级别 未提交读——可以读到其他事务未提交的数据&#xff08;最新的版本&#xff09; 错误现象&#xff1a;脏读、不可重复读、幻读的现象 提交读&#xff08;RC&#xff09;——可以读到其他事务已提交的数据&#xff08;最新已提交的版本&…

TypeScript命名空间和模块

&#x1f3ac; 岸边的风&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 命名空间&#xff08;Namespace&#xff09; 命名空间&#xff08;Namespace&#xff09;使用场景 第三方库 兼容…

蓝桥杯官网填空题(迷宫)

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 X 星球的一处迷宫游乐场建在某个小山坡上。它是由 1010 相互连通的小房间组成的。 房间的地板上写着一个很大的字母。我们假设玩家是面朝上坡的方向站立&#xff0…

Spring 的创建和日志框架的整合

目录 一、第一个 Spring 项目 1、配置环境 2、Spring 的 jar 包 Maven 项目导入 jar 包和设置国内源的方法&#xff1a; 3、Spring 的配置文件 4、Spring 的核心 API ApplicationContext 4、程序开发 5、细节分析 &#xff08;1&#xff09;名词解释 &#xff08;2&…

LeetCode 362 期周赛

8029.与车相交的点 题目&#xff1a; 给你一个下标从 0 开始的二维整数数组 nums 表示汽车停放在数轴上的坐标。对于任意下标 i&#xff0c;nums[i] [starti, endi] &#xff0c;其中 starti 是第 i 辆车的起点&#xff0c;endi 是第 i 辆车的终点。 返回数轴上被车 任意部…

自动化控制系统的设计重点是什么?

要实现对选择性激光烧结系统预热温度的控制&#xff0c;需要找到合理的控制对象模型&#xff0c;但选择性激光烧结设备的预热温度场是一个复杂的非线性系统&#xff0c;很难找到合理的控制对象模型来实现预热温度场的温度控制。模糊控制不需要具体的控制模型&#xff0c;预热温…

Linux命令200例:dnsconf用于配置和管理域名解析服务

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0…

极限的概念与性质

目录 极限的概念 极限的性质 极限的存在准则 极限的概念 极限是数学中的分支——微积分的基础概念&#xff0c;它表示无限趋近于一个固定的数值的过程。在高等数学中&#xff0c;极限可以分为数列极限和函数极限。 1.数列的极限 数列的极限是指对于一个数列{an}中的任意一…

socket编程|TCP

一.套接字概念 套接字&#xff08;Socket&#xff09;是一种用于网络通信的编程接口&#xff0c;它提供了一种机制&#xff0c;使得不同计算机上的应用程序能够通过网络进行通信和交换数据。 套接字可以看作是应用程序和网络之间的端点&#xff0c;它定义了应用程序与网络之间…

400电话:提供全方位客户服务的热线电话

随着现代社会的发展&#xff0c;企业和机构越来越重视客户服务的质量和效率。为了更好地满足客户的需求&#xff0c;提供及时的帮助和解决方案&#xff0c;许多企业纷纷引入了400电话这一全方位客户服务的热线电话。 400电话是一种以4开头的电话号码&#xff0c;通过该号码可以…

[论文阅读]Coordinate Attention for Efficient Mobile Network Design

摘要 最近关于移动网络设计的研究已经证明了通道注意力(例如&#xff0c; the Squeeze-and-Excitation attention)对于提高模型的性能有显著的效果&#xff0c;但它们通常忽略了位置信息&#xff0c;而位置信息对于生成空间选择性注意图非常重要。在本文中&#xff0c;我们提出…