【JavaEE初阶】第四节.文件操作 和 IO (上篇)

news/2024/11/13 4:26:28/

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、文件
  •       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 个区别(重点掌握):

  1. 内存存储空间小,硬盘存储空间大
  2. 内存访问速度快,硬盘访问速度慢
  3. 内存成本高,硬盘成本低
  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 的上半篇的内容就介绍到这里了,下半篇的内容就留到下一篇博客来介绍 ;


http://www.ppmy.cn/news/31106.html

相关文章

Java中wait和sleep区别

文章目录1. Java中wait和sleep区别2. wait和sleep所属方法的不同3. wait的Demo3.1 没有synchronized同步代码块异常3.2 wait使用Demo4. sleep的Demo1. Java中wait和sleep区别 sleep属于Thread类中的static方法;wait属于Object类的方法sleep时线程状态进入TIMED_WAI…

Vue3笔记01 创建项目,Composition API,新组件,其他

Vue3 创建Vue3项目 vue-cli //查看vue/cli版本,确保在4.5.0以上 vue --version //安装或升级vue/cli npm install -g vue/cli //创建项目 vue create new_project //启动 cd new_project npm run serve 也可以通过vue ui进入图形化界面进行创建 vite 新一代前端…

规划数据指标体系方法(下)——新海盗模型

前面已经跟大家分享了规划数据指标体系的两种方法—— OSM 和 UJM 模型,分别从目标-策略以及用户旅途的角度阐述了规划数据指标体系的过程。今天我来跟大家分享最后一种规划数据指标体系的方法——新海盗模型。 了解新海盗模型 海盗模型,即 AARRR 模型&…

Qt广告机服务器(上位机)

目录功能结构adSever.promain.cpptcp_MSG.h 共用Tcp传输信息adsever.h 服务器adsever.cpp 服务器addate.h 时间处理addate.cpp 时间处理adtcp.h 客户端Socket处理adtcp.cpp 客户端Socket处理client.h 客户端信息类client.cpp 客户端信息类admsglist.h 信息记录模块admsglist.cp…

【Java开发】JUC进阶 05:函数式接口、ForkJoin

1 四大函数式接口函数式接口:只有一个抽象方法的接口,只要是函数式接口,就可以用lambda表达式简化例如Runnable:FunctionalInterface public interface Runnable {public abstract void run(); }框架底层大量应用函数式接口&#…

7天收割10个offer,软件测试面试题 (项目经验问题+回答)(超级全细)

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 1、简单介绍下最近做…

【动态规划】

动态规划1引言题目509. 斐波那契数70. 爬楼梯746. 使用最小花费爬楼梯小结53. 最大子数组和结语引言 蓝桥杯快开始了啊&#xff0c;自从报名后还没认真学过算法有(>﹏<)′&#xff0c;临时抱一下佛脚&#xff0c;一起学学算法。 题目 509. 斐波那契数 斐波那契数 &am…

【数据结构】单链表:头部操作我很行,插入也不用增容!!!

单链表 文章目录单链表1.链表1.1链表的概念和结构1.2链表的分类2.单链表的模拟实现2.1单链表的打印2.2单链表的尾插2.3单链表的头插2.4单链表的尾删2.5单链表的头删2.6单链表的查找2.7单链表的中间插入(在结点前插入)2.8单链表的中间删除(删除该结点)2.9单链表的中间插入(在结点…