【JavaSE】文件读写

news/2024/9/22 14:33:39/

目录

一、文件

1、文件的概念

1.广义

2.狭义

二、路径

1、绝对路径

2、相对路径

1.进入下一级./

2.回退上一级../

三、Java里的文件基本操作----File类

1、说明

2、File类的基本操作

1.基本方法

​2.创建与删除文件

3.创建目录

4.文件的重命名

四、文件的读写操作

1、数据流

2、InputStream与OutputStream(字节流读写文件)

1.InputStream抽象类进行字节流读取操作

 2.OutputStream抽象类进行字节流写入

 3、Reader与Writer(字符流读写)

1.Reader抽象类进行字符流读取

2.Writer抽象类进行字符流写入

4、Scanner与PrintWrite(文本文件的读写)

1.Scanner

 2.PrintWrite

 5、关闭资源



 

一、文件

1、文件的概念

1.广义

把操作系统管理的软硬件资源都抽象为文件

2.狭义

狭义上的文件就是存储在硬盘上的数据

在后续的讨论中我们所说的文件是狭义上的文件,在操作系统里文件的目录结构是一个n叉树

二、路径

1、绝对路径

绝对路径是指文件在硬盘上真正存在的路径。类似于盘符:/路径这种就是绝对路径,在后续使用更推荐相对路径,因为每台电脑上每个文件的位置不一定相同,使用绝对路径,在换一台电脑后不一定能找到目标文件

2、相对路径

相对路径则是以一个基准路径为起点描述文化位置,,通过./进入下一级与../回退为上一级目录 

1.进入下一级./

如果此时基准路径是D盘要找到D盘QQ里的QQ.exe则相对路径就是:./QQ/QQ.exe

2.回退上一级../

如果此时基准路径是在D盘里的YJWJ,那么找到QQ.exe相对路径就是../QQ/QQ.exe

三、Java里的文件基本操作----File类

1、说明

文件操作是操作系统提供的一些API,每个系统的API不同,在Java里JVM中把不同系统的文件操作进行了封装,所有的系统下都可以使用JavaAPI操作文件

2、File类的基本操作

1.基本方法

获取上一级路径:getParent()

获取文件名:getName()

获取文件路径:getPath()

 

获取文件的绝对路径:getAbsolutePath()

判断文件是否存在:exists()

判断是否是目录:isDirectory()

判断是否是文件:isFile()

 2.创建与删除文件

1.实例化File对象,给构造方法传入文件路径

2.调用createNewFile()方法创建文件

 

3.调用delete()方法删除文件 

还有另一个在进程退出时删除文件的方法:deleteOnExit() 

3.创建目录

 创建单级目录:

创建多级目录:

 

 

4.文件的重命名

1.创建新的File实例,构造方法传入新名字

 

2.待改名的File实例调用renameTo方法

 

 

四、文件的读写操作

1、数据流

将读写操作的数据比作水流,流分为字节流与字符流,字节流以字节为基本单位适用于二进制,字符流以字符为基本单位适用于文本文件,Java标准库基于流的操作提供了一些类用于读写文件

2、InputStream与OutputStream(字节流读写文件)

1.InputStream抽象类进行字节流读取操作

1.构造实例----打开文件

2.读取----read

3.释放资源 ---关闭文件

代码:

public static void useInputStream() throws IOException {//1.构造实例,操作效果类似于打开文件InputStream inputStream = new FileInputStream("文件路径");//2.读取操作int n = 0;while(n != -1){n = inputStream.read();        //无参read 返回值为int当返回-1时,文件读完System.out.println((char)n);}byte[] content = new byte[1024];inputStream.read(content);        //参数为byte[]  将文件内容读取到数组里inputStream.read(content,0,100); //将len长度的内容读取到数组里off位置开始//3.释放资源类似于关闭文化inputStream.close();}

 2.OutputStream抽象类进行字节流写入

1.构造实例,打开文件

2.写文件

 

3.释放资源,关闭文件

 

代码:

public static void useOutputStream(String path) throws IOException {//1.构造实例,打开文件OutputStream outputStream = new FileOutputStream(path);//2.写文件outputStream.write(97);                 //参数为int  写入一个字节outputStream.write(new byte[]{98,99,100}); //参数为数组,将数组写入文件outputStream.write(new byte[]{101,102,103},0,2);//将数组从off开始写入len个长度//3.释放资源,关闭文件outputStream.close();}

 3、Reader与Writer(字符流读写)

1.Reader抽象类进行字符流读取

1.构造实例 打开文件

 

2.读取文件

3.释放资源 关闭文件

 

代码:

 public static void useReader(String path) throws IOException {//1.构造实例,打开文件Reader reader = new FileReader(path);//2.读取文件int n = 0;while(n != -1){n = reader.read();                           //read方法与前面InputStream读取类似System.out.println((char)n);}//3.释放资源,关闭文件reader.close();}

2.Writer抽象类进行字符流写入

1.构造实例 打开文件

 

2.写入

3.释放资源 关闭文件

 

代码:

 public static void useWriter(String path) throws IOException {//1.构造实例 打开文件Writer writer = new FileWriter(path);//2.写入文件writer.write("参数为字符串写入");writer.write(98); //参数为int类型写入writer.write("字符串写入从off来len长度",0,11);writer.write(new char[]{'a','b','c'});  //参数为字符数组writer.write(new char[]{'a','b','c'},0,2);//3.释放资源 关闭文件writer.close();}

4、Scanner与PrintWrite(文本文件的读写)

1.Scanner

使用:

 

代码:

 public static void useScanner(String path) throws IOException {//1.创建InputStream实例InputStream inputStream = new FileInputStream(path);//2.创建Scanner实例传入InputStream实例Scanner scanner = new Scanner(inputStream);//3.读取我while(scanner.hasNext()){System.out.println(scanner.next());}//4.释放资源inputStream.close();}

 2.PrintWrite

 

使用:

代码:

public static void usePrintWrite(String path) throws IOException {//1.创建OutputStream实例OutputStream outputStream = new FileOutputStream(path);//2.创建PrintWrite实例 传入OutputStream实例PrintWriter printWriter = new PrintWriter(outputStream);//3.开始写入printWriter.println("写入");printWriter.print(222);printWriter.printf("年龄 = %d",100);//4.释放资源printWriter.close();outputStream.close();}

 5、关闭资源

一定要调用close关闭资源,从PCB的文件描述符表中删除,文件描述符表本质有长度上限,一旦达到上限就会导致文件打开失败,文件泄露,释放资源最好使用try with resource,多个资源使用;隔开 


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

相关文章

Qt + OpenCV 部署yolov5(多线程)

文章目录 一、新建项目 UI设计二、代码部分mainwindow 类detector类yolov5类三、效果演示项目基于 Qt + OpenCV 部署yolov5 添加了检测线程(主线程负责主窗口UI显示)避免拖动窗口时卡顿 #mermaid-svg-57ytMm4sbTpUi2CM {font-family:"trebuchet ms",verdana,arial…

基于Java毕业设计学习和分享做菜web系统源码+系统+mysql+lw文档+部署软件

基于Java毕业设计学习和分享做菜web系统源码系统mysqllw文档部署软件 基于Java毕业设计学习和分享做菜web系统源码系统mysqllw文档部署软件本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技术…

vue前后端分离项目打包成app,部署成移动端

将vue项目打包成app,在手机上运行。 1. vue打包 npm run build 先将vue的前端项目打包成dist文件夹 2. 安装hbuilderX Hbuilder官网地址 3. hbuilderX 1)新建项目 我是vue的,所以直接选择的h5app,然后起个名字,选择路径。 2…

Java+SSM在线商城系统电商购物系统(含源码+论文+答辩PPT等)

项目功能简介: 该项目采用的技术实现如下 后台框架:Spring、SpringMVC、MyBatis UI界面:BootStrap、jQuery 、JSP 数据库:MySQL 系统分为前台订票和后台管理: 1.前台商城 商品分类展示、商品详情、商品推荐、购物车、下单、支付 客…

【OpenCV】Ubuntu配置OpenCV环境

1.从官网下载opencv包拷贝到虚拟机Ubuntu中, 虚拟机与主机传输文件可以采用 vmware tool、共享文件夹或者远程连接工具 2.解压得到对应版本号文件夹,我的是opencv-3.4.2 3.修改文件权限chmod -R 777 opencv-3.4.2 从win10进入Ubuntu中的文件压缩包解…

Java项目:新闻推荐管理系统(java+SSM+JavaScript+Ajax+Mysql)

源码获取:俺的博客首页 "资源" 里下载! 项目介绍 本项目新闻推荐管理系统; 前台: 登录、首页、全部新闻、系统特色、猜你喜欢、分类、评论 后台: (1)文件管理:文件列表。 &#x…

AOP 操作

AOP 操作AOP 操作(准备)1. Spring 框架一般是基于 AspectJ 实现 AOP 操作(1)什么是 AspectJ2. 基于 AspectJ 实现 AOP 操作3. 在项目工程里面引入 AOP 先关的依赖4. 切入点表达式举例1:对 com.fairykunkun.dao.UserDao…

Qt之天气预报——界面优化篇(含源码+注释)

一、界面优化效果 下方为界面优化完成和优化前的效果对比。 优化前: 优化后: 二、优化内容 添加标题栏添加图片(图图标素材源自阿里巴巴矢量图标库)更新UI内容(微调大小、布局比例)添加鼠标事件函数&…