【JavaEE初阶】第四节.文件操作 和 IO (上篇)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、文件
- 1.1 文件的概念
- 1.2 文件的路径
- 二、 Java中文件系统操作
- 2.1 File类的属性
- 2.2 File类的构造方法
- 2.3 File类的方法
- 2.3.1 File类的常用获取方法
- 2.3.2 File类的常用判断方法
- 2.3.3 文件的创建与删除
- 2.3.4 其他的常用方法
- 2.4 代码示例演示
- 2.4.1 演示一:演示File类的一些常见用法
- 2.4.2 演示二:文件的创建及其相关属性
- 2.4.3 演示三:文件的删除
- 2.4.4 演示四:创建目录
- 2.4.5 演示五:文件重命名 2.3.1 File类的常用获取方法
前言
提示:这里可以添加本文要记录的大概内容:
在本篇博客中,将主要介绍 的时文件的概念、文件的路径、Java中 文件系统的操作(主要介绍 File类 的各种属性与方法)
提示:以下是本篇文章正文内容,下面案例可供参考
一、文件
1.1 文件的概念
我们平时所说的文件,一般都是存储在计算机硬件上面的文件,可以是 文本文档、图片、程序等等,一般是以 .jpg 、 .txt 、 .mp3 、 .mp4 、 .pptx 等文件格式 ;
而在计算机中的概念,目录(也就是 文件夹)也是文件的一种,称为 目录文件 ;
1.2 文件的路径
文件的路径 一般分为两种:一种是 绝对路径,一种是相对路径 ;
绝对路径:以盘符开头 的路径 ;
相对路径:以 . 或者 .. 开头的 路径,需要先明确一个基准路径,来找到目标的目录 ;
注意:
目录和目录之间,可以用 \ 分割,也可以使用 / 分割;
但是更推荐使用 / 的,因为 \ 在字符串里面表示 转义字符,要想表示分割,就需要 \\,还不如直接用 / 来的更好 !!!
举例说明:
以帮助大家更好的理解 绝对路径 和 相对路径 :
假设 A同学 想要去图书馆看书,但是由于学校非常的大,绕来绕去的就把 A同学 绕晕了 ;
此时,A同学看到 学校大门口旁边有个 警卫,于是就跑过去问路 ;
那么,此时 绝对路径 的内容都是固定的,无论 A同学在哪里,这条路经都是不变的
而所谓的相对路径,其实就是相对的(以 A同学自身的位置为基准的):
当 A同学在校门口的时候,相对路径就是
当 A同学在躬行楼的时候,相对路径就是
当 A同学在行知广场的时候,相对路径就是
在使用 Idea 运行程序的时候,当前的工作目录(取为基准路径)就是项目所在的目录:
二、 Java中文件系统操作
在之前所介绍过的 冯诺依曼体系结构中,我们已经知道,文件是存储在硬盘上的!
复习:硬盘(外存) 和 内存的 4 个区别(重点掌握):
- 内存存储空间小,硬盘存储空间大
- 内存访问速度快,硬盘访问速度慢
- 内存成本高,硬盘成本低
- 内存掉电数据丢失,硬盘掉电数据还在
文件也是被操作系统所管理,在操作系统内核中 有一个专门的模块 —— 文件系统(大概会以某种方式来管理硬盘上的文件) ;
在 Java 中针对 文件系统/文件 进行了一系列的封装,我们可以根据 Java API 对文件进行一些操作,专门提供了 File类,以表示一个文件;
然后,就可以基于 File类,来完成一些关于文件的操作 ;
2.1 File类的属性
分隔符是 / 还是 \ ,暂时不需要纠结,因为平常我们暂时用不到 ;
2.2 File类的构造方法
我们可以通过 构造方法 来基于一个路径,构造出一个文件 ;
2.3 File类的方法
2.3.1 File类的常用获取方法
2.3.2 File类的常用判断方法
2.3.3 文件的创建与删除
2.3.4 其他的常用方法
2.4 代码示例演示
2.4.1 演示一:演示File类的一些常见用法;
代码示例1:
package file;import java.io.File;
import java.io.IOException;//演示 file类 的一些常见用法
public class Demo1 {public static void main(String[] args) throws IOException {File file = new File("d:/test.txt");System.out.println("获取到父路径:" + file.getParent());System.out.println("获取到文件名:" + file.getName());System.out.println("获取到路径" + file.getPath());System.out.println("获取到绝对路径:" + file.getAbsolutePath());System.out.println("获取到修饰过的路径:" + file.getCanonicalPath());}
}
运行结果:
代码示例2:
package file;import java.io.File;
import java.io.IOException;//演示 file类 的一些常见用法
public class Demo1 {public static void main(String[] args) throws IOException {File file = new File("./test.txt");System.out.println("获取到父路径:" + file.getParent());System.out.println("获取到文件名:" + file.getName());System.out.println("获取到路径" + file.getPath());System.out.println("获取到绝对路径:" + file.getAbsolutePath());System.out.println("获取到修饰过的路径:" + file.getCanonicalPath());}
}
运行结果:
2.4.2 演示二:文件的创建及其相关属性
代码示例:
package file;import java.io.File;
import java.io.IOException;public class Demo2 {public static void main(String[] args) throws IOException {//前面没有写 ./ ,但是也相当于是 相对路径,即 相当于是有 ./ (./ 可以省略)File file = new File("HelloWorld.txt");System.out.println("当前目录下,是否存在该文件:" + file.exists());System.out.println("判断其是否是目录:" + file.isDirectory());System.out.println("判断其是否是文件:" + file.isFile());System.out.println("--------------------------------------------------");//现在可以创建一个文件file.createNewFile();System.out.println("当前目录下,是否存在该文件:" + file.exists());System.out.println("判断其是否是目录:" + file.isDirectory());System.out.println("判断其是否是文件:" + file.isFile());}
}
运行结果:
此时,我们可以看见,程序运行结束后,创建了一个新的文件:
同时,当找到绝对路径去观察时,就会发现真的创建了一个文件:
2.4.3 演示三:文件的删除
第一种删除方法:delete 方法(直接删除)
package file;import java.io.File;public class Demo3 {public static void main(String[] args) {//文件删除File file = new File("HelloWorld.txt");file.delete();System.out.println(file.exists());} }
运行结果:
我们可以看见,"HelloWorld.txt"文件就真的被删除了 ;
打开绝对路径的时候,文件确实被删除了 ;
第二种删除方法:deleteOnExit 方法(程序退出之后再删除,可以用来创建一些临时文件)
偷偷摸摸的又运行了一下 Demo2,以创建出文件 :
我们可以看见,当运行到打印 文件是否存在 的时候,仍然是文件存在的 ;
当程序运行结束之后,文件才不存在被删除了 ;
同时,当打开绝对路径的时候,确实发现文件没有了 :
2.4.4 演示四:创建目录
如果我们创建的是单级目录的话,可以使用 mkdir 方法:
package file;import java.io.File;public class Demo4 {//创建目录public static void main(String[] args) {File file = new File("test");System.out.println(file.exists());System.out.println(file.isDirectory());System.out.println("---------------------");file.mkdir();System.out.println(file.exists());System.out.println(file.isDirectory());} }
运行结果:
此时,可以观察到左边,真的创建了一个目录:
当打开绝对路径去观察时,也会发现真的出现了一个目录(文件夹):
当我们想要创建的是多级目录时,使用的就需要是 mkdirs 方法(如果继续使用 mkdir 方法,就会发现它是错误的)
package file;import java.io.File;public class Demo4 {//创建目录public static void main(String[] args) {File file = new File("test/aa/1");System.out.println(file.exists());System.out.println(file.isDirectory());System.out.println("---------------------");//file.mkdir();//创建多级目录的时候需要用的是 mkdirs 方法file.mkdirs();System.out.println(file.exists());System.out.println(file.isDirectory());} }
运行结果:
同时,可以观察到左边创建了目录:
当打开绝对路径去观察时,也会发现创建了多级目录:
2.4.5 演示五:文件重命名
package file;import java.io.File;public class Demo5 {//文件重命名public static void main(String[] args) {File file1 = new File("./test1.txt");File file2 = new File("./test2.txt");file1.renameTo(file2);} }
运行结果:
我们可以很清楚的看见,文件名 test1.txt 运行程序之后,重命名为了 test2.txt ;
总结
好了,关于 文件操作和IO 的上半篇的内容就介绍到这里了,下半篇的内容就留到下一篇博客来介绍 ;
相关文章:

【JavaEE初阶】第四节.文件操作 和 IO (上篇)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、文件 1.1 文件的概念 1.2 文件的路径二、 Java中文件系统操作 2.1 File类的属性 2.2 File类的构造方法 2.3 File类的方法 …...
开源免费堡垒机Teleport堡垒机的安装
准备:纯净centos7系统一个作为堡垒机,若干个linux系统或windows系统服务器作为受保护的服务器 堡垒机IP:192.168.1.15 服务器IP:192.168.1.10 1、teleport安装 下载地址: https://www.tp4a.com/static/download/teleport-server-linux-x64-3.6.4-b3.tar.gz xshell上传压缩…...

图形报表ECharts
图形报表ECharts1 图形报表ECharts1.1 ECharts简介-富客户端图表库ECharts缩写来自Enterprise Charts,商业级数据图表,是百度的一个开源的使用JavaScript实现的数据可视化工具,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏…...

便捷式储能电源核心技术--单相逆变器设计
便捷式储能电源核心技术–单相逆变器设计 1.逆变器的规格参数 输入电压直流400V输出电压交流rms220V开关频率10kHz滤波电容6.23uF控制方式单极性倍频2.视频学习链接 视频学习链接 3.主电路仿真设计...

Gamma矫正
Gamma 曲线Gamma校正被使用在8位RGB图中。用来解决在有限的存储空间中保存尽可能多的人类感受敏感的色彩内容。Gamma 矫正Gamma校正的方式就是采样时,和输出到显示器给人类看时,对亮度进行的调整.如采样时 Gamma1/2.2 调亮Gamma,如显示时 Gamma2.2 调暗Gamma实际亮度…...
速懂cookie,session,token
文章目录cookiesessiontoken区别cookie 是浏览器提供的一种能力,可以在每次发起请求前,带上cookie里面的内容(一些key,value值) 分类: 会话级cookie:默认情况,就是会话级cookie&…...

javaEE初阶 — HTML 中的常见标签
文章目录注释标签标题标签:h1 h6段落标签:p换行标签:br格式化标签图片标签:img1. img 的 alt 属性2. img 的 title 属性3. width 与 heigth 属性用来描述图的尺寸超链接标签:a表格标签列表标签表单标签1. from 标签2. …...

MySQL慢查询
2 慢查询 2.1 慢查询介绍 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。具体指运行时间超过long_query_time值的SQL&…...

tensorflow【import transformers 报错】
目录 一、安装 安装好了tensorflow,但是import时候报错: import transformers 报错 一、安装 (1)创建环境: conda create -n [name] python3.3-3.7 (2)激活环境: conda activate [name] …...

JMU软件20 计算机网络复习
文章目录题型单位换算第一章协议与划分层次、网络协议的三个组成要素,分层的思想等协议网络协议的三个组成要素分层的思想⭐计算机网络体系结构OSI 的七层协议TCP/IP 的四层协议五层协议发送时延、传播时延、总时延、往返时间RTT计算第二章 物理层传输媒体导向性传输…...
Java基础之《dubbo(1)—dubbo基础入门》
一、为什么要使用dubbo 1、dubbo是什么 dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。 2、dubbo有何特点 (1)远程通讯:提供透明化的远程方法调用,提供…...
HTML注入的一种攻击思路(超链接替换为点击验证,现在常见)
目录 背景 利用方法 举一反三 场景1:截获 TOKEN 场景2:截获后台信息 总结...

Redis-6集群
文章目录前言Redis集群原理搭建Redis集群集群拓展后记前言 前两期介绍和搭建了Redis的主从复制架构和哨兵模式,虽然哨兵模式能够实现自动故障转移主备切换,一定程度上提高了系统的容错性 但这两种架构模式都不能解决单节点的并发压力和物理上线的问题&…...

Spring Cloud学习笔记:基础知识
这是本人学习的总结,主要学习资料如下 马士兵教育 目录1、Spring Cloud 简介2、Eureka3、建立Spring Cloud项目3.1、启动Server3.1.1、dependency3.1.2、配置文件3.1.3、Server端启动代码3.2、启动Client3.2.1、dependency3.2.2、配置文件3.3.3、Client端启动代码3…...

农产品销售系统/商城,可运行
文章目录项目介绍一、项目功能介绍1、用户模块主要功能包括:2、商家模块主要功能包括:3、管理员模块主要功能包括:二、部分页面展示1、用户模块部分功能页面展示2、商家模块部分功能页面展示3、管理员模块部分功能页面展示三、部分源码四、底…...
【Java开发】JUC进阶 05:函数式接口、ForkJoin
1 四大函数式接口函数式接口:只有一个抽象方法的接口,只要是函数式接口,就可以用lambda表达式简化例如Runnable:FunctionalInterface public interface Runnable {public abstract void run(); }框架底层大量应用函数式接口&#…...

Nginx支持quic协议
第一种方式:Nginx官方nginx-quic搭建 通过部署Nginx官方的QUIC分支来实现的浏览器和nginx-quic服务器粗略的HTTP3通信。 1、下载BoringSSL BoringSSL 是由谷歌开发,从 OpenSSL 中分离的一个分支。BoringSSL 是 Chrome/Chromium、Android(但它不是 NDK 的…...
笔记 - Java 内存结构与模型
-- Java里内存结构与内存模型是两种概念 一、Java内存结构: HeapMemory - 堆内存Java Stacks - 栈内存 (运行时)Method Area - 方法区Native Method Stack - 本地方法栈 真实和系统打交道的地方Jit Compiler - 将java运行指令编译成机器指令G…...

C#基础教程12 数组
文章目录 C# 数组(Array)C# 中的数组声明数组初始化数组赋值给数组访问数组元素C# 数组细节C# 数组(Array) 数组是一个存储相同类型元素的固定大小的顺序集合。数组是用来存储数据的集合,通常认为数组是一个同一类型变量的集合。 声明数组变量并不是声明 number0、number1…...

Android中级——屏幕和绘图
屏幕和绘图屏幕系统屏幕密度独立像素密度dp单位转换XML绘图(需放在Drawable)BitmapShapeLayerSelector绘图技巧CanvasLayerPorterDuffXfermodeShaderPathEffectSurfaceView屏幕 屏幕大小:指屏幕对角线长度,单位为寸分辨率&#x…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...

【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决
问题: pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”,…...
自定义线程池1.2
自定义线程池 1.2 1. 简介 上次我们实现了 1.1 版本,将线程池中的线程数量交给使用者决定,并且将线程的创建延迟到任务提交的时候,在本文中我们将对这个版本进行如下的优化: 在新建线程时交给线程一个任务。让线程在某种情况下…...
JS的传统写法 vs 简写形式
一、条件判断与逻辑操作 三元运算符简化条件判断 // 传统写法 let result; if (someCondition) {result yes; } else {result no; }// 简写方式 const result someCondition ? yes : no;短路求值 // 传统写法 if (condition) {doSomething(); }// 简写方式 condition &…...