【JAVA】-【IO流】

news2024/11/25 18:44:06

文章目录

  • FileReader读入数据的基本操作
  • FileReader中使用reader()
  • FileWrite写出数据的操作
  • 使用FileInputStream、FileOutputStream操作图片
  • 缓冲流(字节型)实现非文本文件的复制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
复制文本文件也可以使用字节流,但是不要在内存中读出来,比如不要system.out()出来
在这里插入图片描述

FileReader读入数据的基本操作

IO流的操作可以归纳为4步:

  1. java是面向对象的,你要读入文件,首先要有个对象来代表这个文件,所以:File file = new File("hello.text");
  2. 对文件的读写是针对流的操作,所以也需要一个流的实例化:FileReader fr = new FileReader(file);,此处因为操作的是文本文件,是通过字符的方式将文件内容读到内存中,所以用FileReader流,之后你以别的方式操作别的内容需要换一种流
  3. 对文件进行操作:读入/写出
  4. 关闭资源,即关闭IO流
    在这里插入图片描述
    main方法中的new File()的地址是相较于本项目的,相当于他是站在本项目,而在测试案例中的new File()的地址是相较于本module的
    优化一下:
    在这里插入图片描述
    前面我们写的代码是通过抛异常的方式来处理异常的,但是如果执行了new FileReader(file)开启了IO流,然后fr.read()遇到了异常,异常就被抛了出去,导致这个fr.close()未执行,IO流没有被关闭,存在资源浪费、内存泄漏问题
    在这里插入图片描述
    所以要用try…catch…finally的方式来捕获异常,以保证不管在哪里出现了异常,IO流都会被关闭
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

FileReader中使用reader()

如果达到文件末尾,返回-1。reader(char[] cbuf):相当于reader使用cbuf去装文件中的内容,如果文件中的内容大于cbuf的长度,那么能读取cbuf个字符,否则读入的文件内容少于cbuf的长度,而cbuf数组中会有未被覆盖的数据,这就是错误写法的原因。举例:假如hello.txt文件的内容为:helloworld123,那么第一次读取到的是hello,第二次读取到的是world,第三次读取到的是123ld,所以判断每次读入了多少个字符,要用reader(char[] cbuf)的返回值而非cbuf数组的长度
在这里插入图片描述
在这里插入图片描述

FileWrite写出数据的操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

使用FileInputStream、FileOutputStream操作图片

在这里插入图片描述
在这里插入图片描述

缓冲流(字节型)实现非文本文件的复制

缓冲流:为了提高文件的读写效率,之所以能提高读写效率,是因为他内部提供了一个缓存区,在进行读的时候,他会先把文件读到buffer里面,buffer中存满后再一次性写出,buffer的默认大小是8个字节。bufferOutputStream中有个flush()方法用于刷新缓冲区,即将缓存区的数据进行读写,然后清空。
一般开发都用缓冲流。
请添加图片描述
请添加图片描述
内层流的关闭可以省略
请添加图片描述

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

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

相关文章

【Matlab】Elman神经网络遗传算法(Elman-GA)函数极值寻优——非线性函数求极值

往期博客👉 【Matlab】BP神经网络遗传算法(BP-GA)函数极值寻优——非线性函数求极值 【Matlab】GRNN神经网络遗传算法(GRNN-GA)函数极值寻优——非线性函数求极值 【Matlab】RBF神经网络遗传算法(RBF-GA)函数极值寻优——非线性函数求极值 本篇博客将主要介绍Elman神…

【Spring Boot】Spring Boot项目的创建和文件配置

目录 一、为什么要学Spring Boot 1、Spring Boot的优点 二、创建Spring Boot项目 1、创建项目之前的准备工作 2、创建Spring Boot项目 3、项目目录的介绍 4、安装Spring Boot快速添加依赖的插件 5、在项目中写一个helloworld 三、Spring Boot的配置文件 1、配置文件的…

opencv基础48-绘制图像轮廓并切割示例-cv2.drawContours()

绘制图像轮廓:drawContours函数 在 OpenCV 中,可以使用函数 cv2.drawContours()绘制图像轮廓。该函数的语法格式是: imagecv2.drawContours( image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset]]…

mousedown拖拽功能(vue3+ts)

因为项目有rem适配,使用第三方插件无法处理适配问题,所有只能自己写拖拽功能了 拖拽一般都会想到按下,移动,放开,但是本人亲测,就在div绑定一个按下事件就行了(在事件里面写另外两个事件&#x…

前端架构师的具体职责范围(合集)

前端架构师的具体职责范围1 职责: 1、前端技术选型、架构搭建、制定前端开发规范,并编制相关文档 2、负责搭建前端框架、通用组件方案制定、性能优化相关工作; 3、维护和升级本地开发环境,提高开发效率,提升开发质量; 4、推动…

【深度学习注意力机制系列】—— ECSKNet注意力机制(附pytorch实现)

SKNet(Selective Kernel Network)是一种用于图像分类和目标检测等任务的深度神经网络架构,其核心创新是引入了选择性的多尺度卷积核(Selective Kernel)以及一种新颖的注意力机制,从而在不增加网络复杂性的情…

2.安装Docker-ce

一、删除之前安装的docker(若之前未安装过,此步骤省略…) 进入centos根目录执行以下命令(\ 是linux系统种命令换行符,如果命令过长,可以用\来换行) yum remove docker \ docker-client \ docker-client-latest \ doc…

BL302嵌入式ARM控制器进行SQLite3数据库操作的实例演示

本文主要讲述了在钡铼技术BL302嵌入式arm控制器上运行 SQLite3 数据库的命令示例。SQLite3 是一个轻型的嵌入式数据库,不需要安装数据库服务器进程,占用资源低且处理速度快。 首先,需要将对应版本的 SQLite3 文件复制到设备的 /usr/ 目录下&…

MyCat管理及监控——zookeeper及MyCat-web安装

1.MyCat管理 2.MyCat-eye 3.zookeeper安装 第一步:解压 第二部: 切换目录,创建data文件夹 第三步:修改zookeeper配置文件 这样zookeeper安装及配置就完成了 4.MyCat-web安装 注意mycat-web要与zookeeper关联,…

单元测试到底是什么?应该怎么做?

一、什么是单元测试? 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。至于“单元”的大小或范围,并没有一个明确的标准,“单元”可以是一个函数、方法、类、功能模块或者子系统。单…

Kafka3.0.0版本——Broker(上下线)示例

目录 一、Broker(上下线)示例1.1、三台服务器信息1.2、先启动zookeeper集群,再启动kafka集群1.3、zookeeper客户端工具prettyZoo查看brokers中ids1.4、停止某一台kafka服务,再次查看brokers中ids1.5、重新启动停止的kafka服务&…

笔记——听听前辈们的教学评一体化

精选课程内容 强而有力的知识 做中学,用中学,创中学。 这个技术很难做 关于支架的新理解 有价值 有意义 和 趣味性 权衡,不能为了趣味性舍弃价值 举例说明文 被教成了文学作品 导致所教所学 悄然发生了偏移。 所以教学评如何一直&#xff…

使用Beautiful Soup等三种方式定制Jmeter测试脚本

目录 背景介绍 实现思路 把脚本数据读出,使用正则表达式(re库)匹配关键数据进行修改 把脚本数据读出,使用BeautifulSoup的xml解析功能解析后修改 通过Beautiful Soup Beautiful Soup 具体实现 使用string.Template字符替换…

Jupyter Notebook 遇上 NebulaGraph,可视化探索图数据库

在之前的《手把手教你用 NebulaGraph AI 全家桶跑图算法》中,除了介绍了 ngai 这个小工具之外,还提到了一件事有了 Jupyter Notebook 插件: https://github.com/wey-gu/ipython-ngql,可以更便捷地操作 NebulaGraph。 本文就手把手教你咋在 J…

BpBinder与PPBinder调用过程——Android开发Binder IPC通信技术

在Android系统中,进程间通信(IPC)是一个非常重要的话题。Android系统通过Binder IPC机制实现进程间通信,而Binder IPC通信技术则是Android系统中最为重要的进程间通信技术之一。本文将介绍Binder IPC通信技术的原理,并…

实测有效Window10系统解决文件名过长无法删除或移动问题

问题:window10家庭版,文件名字太长无法对其进行操作 如图 PS:什么注册表方法,压缩方法都没效果 解决: 打开 注册编辑器 进入路径 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem 修改 LongP…

Jenkins 修改默认管理员帐号

1、新增一个新的超级管理员用户,并验证能正常登录 2、进入 Jenkins 用户管理目录: /data/software/jenkins/users 3、修改超级管理文件夹的名称为其他名称,如:mv admin_*** ifadm_*** 4、重启Jenkins容器

snowboy+sherpa-onnx+Rasa+Coqui实现语音音箱【语音助手】

背景 本系列主要目标初步完成一款智能音箱的基础功能,包括语音唤醒、语音识别(语音转文字)、处理用户请求(比如查天气等,主要通过rasa自己定义意图实现)、语音合成(文字转语音)功能。 coqui主要在项目中完成接收rasa响应的内容&…

Postgresql源码(111)dms框架进程信号发送与处理流程

信号处理整体流程 信号从bgworker发出后,主进程将ParallelMessagePending置为true,下次CHECK_FOR_INTERRUPTS()时,会进入信号处理逻辑中:HandleParallelMessages。进入信号处理逻辑后,首先遍历所有现存的ParallelCont…

护网专题简单介绍

护网专题简单介绍 一、护网红蓝队介绍1.1、网络安全大事件1.2、护网行动由来1.3、护网行动中的角色二、红队介绍2.1、红队所需技能2.2、红队攻击流程 三、蓝队介绍3.1、蓝队所需技能3.2、蓝队防守四阶段3.3、蓝队前期准备 四、常见安全厂商介绍4.1、常见安全厂商 五、常见安全产…