<JavaEE> 文件IO -- File类和文件操作

目录

一、文件的概念

二、文件系统

三、文件类型

四、使用 File 类进行文件操作

4.1 File 类中的 pathSeparator 属性

4.2 File 类构造方法

4.3 File 类常用方法


一、文件的概念

什么是文件?

广义上的“文件”是指抽象化的操作系统中的硬件设备和软件资源,目的是对这些“文件”进行同一的管理。

狭义上的“文件(FIle)”则只是指在硬件设备中保存的数据,这些数据往往以一个一个的单位进行保存,每一个独立的单位就称为“文件”。

二、文件系统

1)什么是文件系统?

是一个“树形结构”实现的系统,用于组织管理文件。

操作系统通过“目录”对文件进行组织管理。利用目录的层次结构来描述文件所在位置,即“路径”。
由于“树形结构”的特点,每个文件都会有自己的唯一路径。通过路径,就可以找到文件。
2)绝对路径和相对路径
绝对路径

从“树形结构”的根节点开始描述,一直到叶子节点(即文件),这样的描述方式称为文件的“绝对路径”(absolute path)。在windows系统中,绝对路径从盘符开始描述。

相对路径从指定的任意节点出发,该节点被称为“基准目录”。以该节点为基准,对文件进行描述,这样的描述方式称为“相对路径”(relative path)。想要得到相对路径,必须先明确基准目录。
3)相对路径的两个符号
.“ . ”号表示当前目录。
..“ .. ”号表示当前目录的上一级目录。
4)表示相对路径的示例
基准目录:D:/Test/A/
相对路径(当前目录下的test1.txt文件):./test1.txt
相对路径(上级目录下,B文件夹中的test2.txt文件):../B/test2/txt

三、文件类型

有哪些文件类型?
文本文件

文本文件是指保存合法字符的文件,字符以字符串形式保存。合法字符是指被字符集编码的文本,如“UTF-8”等字符集。

二进制文件二进制文件是指文件保存的是二进制数据。

四、使用 File 类进行文件操作

在 Java 中,文件的操作分为两类
操作文件系统

通过 File 类,在系统中进行增、删、查等操作。(下文介绍该类)

操作文件内容通过 流对象,在文件中读取或写入内容。

4.1 File 类中的 pathSeparator 属性

pathSeparator 属性是什么?
不同的操作系统使用“/”或“\”作为目录分隔符,为使两种情况都能被成功识别,File 中使用了 pathSeparator 属性来对这两个符号做自适应。

4.2 File 类构造方法

File 类中常用的构造方法有以下三种

public File(File parent, String child)

根据父目录和子路径,创建新的 File 实例。

public File(String pathname)

根据文件路径,创建新的 File 实例。路径可以是绝对或相对路径。

public File(String parent, String child)

根据父目录和子路径,创建新的 File 实例。

4.3 File 类常用方法

File 类中有以下常用的方法

public String getParent()

返回 File 对象的父目录

public String getName()

返回 File 对象的文件名

public String getPath()

返回 File 对象的文件路径

public String getAbsolutePath()

返回 File 对象的绝对路径

public String getCanonicalPath()

返回 File 对象,修饰过的绝对路径

public boolean exists()

判断  File 对象是否真实存在

public boolean isDirectory()

判断 File 对象是否为目录

public boolean isFile()

判断 File 对象是否为文件

public boolean createNewFile()

创建新的 File 对象

public boolean delete()

删除 File 对象

public void deleteOnExit()

在进程结束后,删除 File 对象

public String[] list()

返回 File 对象目录下的所有文件名

public File[] listFiles()

返回 File 对象目录下的所有文件名

public boolean mkdirs()

创建 File 对象的目录,包括中间目录

public boolean renameTo(File dest)

修改文件名、文件路径;修改文件路径与剪切粘贴类似;

public boolean canRead()

判断是否对文件有可读权限

public boolean canWrite()

判断是否对文件有可写权限

代码演示 getAbsolutePath() 和 getCanonicalPath() :

    //文件的基准目录是"C:/Test/A"。public static void main(String[] args) throws IOException {File file = new File("./test.txt");System.out.println("AbsolutePath-> "+file.getAbsolutePath());System.out.println("CanonicalPath-> "+file.getCanonicalPath());}//运行结果:
AbsolutePath-> C:\Test\A\.\test.txt
CanonicalPath-> C:\Test\A\test.txt可以看出AbsolutePath就是父目录和相对路径的字符串连接。
而CanonicalPath则是经过了修饰处理的。

代码演示 exists()、isDirectory()、isFile() 和 createNewFile() :

    public static void main(String[] args){File file = new File("C:/Test/A/test.txt");System.out.println("文件是否存在:" + file.exists());System.out.println("这是一个目录:" + file.isDirectory());System.out.println("这是一个文件:" + file.isFile());System.out.println("创建新文件:" + file.createNewFile());}//运行结果:
文件是否存在:false
这是一个目录:false
这是一个文件:true
创建新文件:true可以看出,使用 File 构造方法时,传入的文件路径并不一定需要真实存在。
通过 exists() 可以判断文件是否真实存在。
通过 createNewFile() 可以创建出一个新文件,文件的路径与构造方法的参数相同。

代码演示 list() 和 listFiles() :

//目录"C:/Test"中,存在文件夹"A"、文件夹"B"和文件"Test.txt"。public static void main(String[] args){File f = new File("D:/Learn/E-JavaEE");File[] files = f.listFiles();for (File file : files){System.out.println(file.getName());}}//运行结果:
Test.txt
A
Blist() 和 listFiles() 用法相同,只是返回值不同。
list() 返回字符串数组。
listFiles() 返回文件数组。

代码演示 renameTo() :

    public static void main6(String[] args) throws IOException {File src = new File("D:/Test/A/test.txt");File dest = new File("D:/Test/B/test1.txt");System.out.println("重命名:" + src.renameTo(dest)); }//运行结果:
重命名:true可以看到,虽然方法名称为“重命名”,但是重命的可以不只是名,还可以是目录。
这就达成了剪切粘贴的效果。

阅读指针 -> 《文件IO -- 流对象操作文件内容》

<JavaEE> 文件IO -- 数据流和文件内容操作(Reader 和 Writer 、InputStream 和 OutputStream)-CSDN博客文章浏览阅读280次。介绍了数据流的概念和使用,着重介绍了字符流中的 Reader 类和 Writer 类、字节流中的 InputStream类和 OutputStream类https://blog.csdn.net/zzy734437202/article/details/134972142

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

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

相关文章

第十三章 SpringCloud Alibaba 实现 Seata--分布式事务

分布式事务基础 事务 事务指的就是一个操作单元,在这个操作单元中的所有操作最终要保持一致的行为,要么所有操作 都成功,要么所有的操作都被撤销。简单地说,事务提供一种“要么什么都不做,要么做全套”机制。 本地事…

RAG检索增强技术在知识库智能检索场景下的应用实践

如果你对这篇文章感兴趣,而且你想要了解更多关于AI领域的实战技巧,可以关注「技术狂潮AI」公众号。在这里,你可以看到最新最热的AIGC领域的干货文章和案例实战教程。 一、知识检索增强的基本概述 1.1、知识检索增强技术提出的背景 1.1.1、L…

Spring Boot学习随笔- JSP小项目-员工管理系统(验证码生成、增删改查)

学习视频:【编程不良人】2021年SpringBoot最新最全教程 第十章、项目开发 实现一个登录注册,增删改查功能的系统 10.1 项目开发流程 需求分析 分析用户主要需求 提取项目核心功能,根据核心功能构建页面原型 库表设计: 分析系统…

基于FPGA的视频接口之高速IO(CML)

简介 本章节是对于高速IO接口应用的一个扩展,目前扩展为CML。 CML(电流模式逻辑-即Current Mode Logic)。电路主要靠电流驱动,也是所有高速数据接口形式中最简单的一种,它的输入与输出的匹配集成在芯片内部&#xff0c…

mysql innodb知识记录

官方文档 官网架构图 innodb 特性 内存 buffer pool 采用优化后的LRU算法, 3/8 of the buffer pool is devoted to the old sublist.The midpoint of the list is the boundary where the tail of the new sublist meets the head of the old sublist.When In…

逆向登录(js逆向)

链接: aHR0cHM6Ly9zc28ubHlua2NvLmNvbS9jdXN0b21lci9sb2dpbj9jbGllbnRfaWQ9OGMxNWE2NGY2Nzk0NDY5YjhhNTlmMTBiODNjZWYzYzEmcmVkaXJlY3RfdXJpPWh0dHBzOi8vaDUubHlua2NvLmNuOjQ0My9hdXRoL21hbGwvaDUvbG9naW4mcmVzcG9uc2VfdHlwZT1jb2RlJnNjb3BlPW9wZW5pZCZzdGF0ZT0zNGQ4NGYxNmIwY…

MySQL安装——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

MySQLhttps://www.mysql.com/ 将下发的ds_db01.sql数据库文件放置mysql中 12、编写Scala代码,使用Spark将MySQL的ds_db01库中表user_info的全量数据抽取到Hive的ods库中表user_info。字段名称、类型不变,同时添加静态分区,分区字段为etl_da…

Win10电脑退出安全模式的两种方法

在Win10电脑中,大家可以点击进入系统安全模式,完成相对应的系统设置。但是,很多用户进入安全模式完成设置后,不知道怎么操作才能成功退出安全模式?接下来小编给大家分享两种简单的方法,帮助大家成功退出Win…

强大的数学软件 GeoGebra 多平台适用

GeoGebra 是一款教育数学软件,可以帮助学生和教师探索、学习和教授各种数学概念和科学领域的知识。GeoGebra 以其灵活性和强大的功能而闻名,它融合了几何、代数、微积分、概率、统计和其他数学领域的工具,以及绘图和计算功能。 功能 GeoGeb…

Java魔法解密:HashMap底层机制大揭秘

文章目录 一、 源码深度解析1.1 窥探Java集合框架中的设计思想1.2 逐行解读HashMap的源代码1.2.1 类信息1.2.2 常量属性1.2.3 变量属性1.2.4 节点信息1.2.5 构造方法1.2.6 put方法1.2.6.1 putVal方法1.2.6.2 putTreeVal方法1.2.6.3 tieBreakOrder方法1.2.6.4 treeifyBin方法1.2…

lua语法

lua语法 1.lua数据类型 lua 脚本输出乱码,将lua脚本改为UTF-8编码,并且需要DOS下修改代码页:CHCP 65001 即可。 基本语法 注释 print("script lua win")-- 单行注释--[[多行注释]]--标识符 类似于:java当中 变量、…

新建vue3项目

三种方法 一. 第一种方式 1、操作步骤: 创建项目目录 vue create 项目名称选择配置方式 ? Please pick a preset: #选择一个配置 Default ([Vue 3] babel, eslint)Default ([Vue 2] babel, eslint)Manually select …

Python:(Sentinel-1)如何解析SNAP输出的HDF5文件并输出为GeoTIFF?

博客已同步微信公众号:GIS茄子;若博客出现纰漏或有更多问题交流欢迎关注GIS茄子,或者邮箱联系(推荐-见主页). Python:(Sentinel-1)如何解析SNAP输出的HDF5文件并输出为GeoTIFF? 01 前言 最近…

Spring之容器:IOC(1)

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…

【Android Studio】各个版本下载地址

下载地址: https://developer.android.com/studio/archive?hlzh-cn

java期末大作业(星辰对决--五子棋AI)

星辰闪耀星空棋,璀璨洒满宇宙间。 Java编织智慧谱,FindYou翩舞奇妙规。 黑白对弈纵横展,人机较量激荡心。 星光指引胜利路,创造奇迹指尖舞。 代码: 等改好了再放上来 效果图: 日志: 2023/12/17 今天去网上学了一下AI下五子棋…

什么同源策略?

同源 同源指的是URL有相同的协议、主机名和端口号。 同源策略 同源策略指的是浏览器提供的安全功能,非同源的RUL之间不能进行资源交互 跨域 两个非同源之间要进行资源交互就是跨域。 浏览器对跨域请求的拦截 浏览器是允许跨域请求的,但是请求返回…

计算机网络(1):开始

计算机网络(1):开始 计算机网络在信息时代中的作用 21世纪的一些重要特征就是数字化、网络化和信息化,是一个以网络为核心的信息时代。要实现信息化就必须依靠完善的网络,因为网络可以非常迅速地传递信息。因此网络现…

人工智能原理课后习题(考试相关的)

文章目录 问答题知识表示一阶谓词逻辑表示法语义网络表示法 确定推理谓词公式永真和可满足性内容归结演绎推理 不确定推理主观贝叶斯可信度方法证据理论 搜索策略机器学习 问答题 什么是人工智能? 人工智能就是让机器看起来像人类表现出的智能水平一样 人工智能就是…

ElasticSearch单机或集群未授权访问漏洞

漏洞处理方法: 1、可以使用系统防火墙 来做限制只允许ES集群和Server节点的IP来访问漏洞节点的9200端口,其他的全部拒绝。 2、在ES节点上设置用户密码 漏洞现象:直接访问9200端口不需要密码验证 修复过程 2.1 生成认证文件 必须要生成…