Java学习笔记(十五)IO流(二)

字符流

字符流其实就是字节流+字符集,他在遇到相关的数据时会转变为相关的字节,例如遇到英文就转变为一个字节,遇到中文转变为三个字节

FileReader(读取数据类)

作用:纯文本文件-------->程序

将纯文本文件里的数据读取到程序中,同样也分为三个步骤

1、创建字符输入流对象

2、读取数据

3、释放资源

在默认的read方法读取数据时读英文时跟字节流一致,一次读一个字节,但是如果读到中文,就会一次读取三个字节,并在读取完之后返回一个整数类型的值,如果想看到源文件中被读取的数据需要对这个返回的整数进行一个数据类型的转换,如果读取完该文件的数据,会返回-1

具体实现代码如下:源文件数据为:

abcdefghibbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb看看我被复制了吗哈
package com.itazhang.Demo1;import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;public class CharStreamDemo2 {public static void main(String[] args) throws IOException {FileReader fr =new FileReader("D:\\11Codingtext\\MyIO\\a.txt");int read = fr.read();System.out.println((char) read);}
}

使用read(char数组)的方式能一次读取数组长度个数据,这样的话在读取的时候,读取出来的数据是直接存储在这个char数组中的,而此时read(char数组)这个方法的返回值是这个数组的长度也是一次能读取的数据个数,在读取完本文件数据之后同样会返回-1。(他与字节流读取不同的地方在于他读取存入的数据是char类型,而字节流读取之后存入的是byte类型

实现代码如下:具体实现方法与字节流的数组读取类似,只不过字节流的数组读取的数组是byte类型,而下列代码也就是字符流的数组读取的数组类型为char类型

package com.itazhang.Demo1;import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;public class CharStreamDemo1 {public static void main(String[] args) throws IOException {FileReader fr =new FileReader("D:\\11Codingtext\\MyIO\\a.txt");FileWriter fw =new FileWriter("D:\\11Codingtext\\MyIO\\b.txt");char[] crr = new char[10];int temp;while(true){temp = fr.read(crr);if(temp == -1){break;}fw.write(crr,0,temp);}fw.close();fr.close();}
}

Filewriter(写出数据类) 

字节流输出文本文件数据的话是使用 Filewriter进行将数据从程序输出到文件中

作用:程序数据--------->文件

练习

下列为一个文件加字节流实现的小练习,要求将a文件中的数据

4-9-1-7-8-2

按照从小到大的顺序排列并输出到该文件中,具体实现代码如下:

package com.itazhang.Demo1;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.StringJoiner;public class ByteStreamExercise1 {public static void main(String[] args) throws IOException {FileInputStream fi = new FileInputStream("D:\\11Codingtext\\MyIO\\a.txt");int temp;StringBuilder sb =new StringBuilder();//读取数据while (true){temp = fi.read();if(temp == -1){break;}sb.append((char)temp);}fi.close();//对其进行排序Integer[] s = Arrays.stream(sb.toString().split("-")).map(Integer::parseInt).sorted().toArray(Integer[]::new);//用Stringjoiner进行将数据排出StringJoiner sj = new StringJoiner("-");//这里不是将整个数组转化类型,而是将数组里的每个元素转化类型for (Integer integer : s) {sj.add(integer.toString());}String str = sj.toString();FileOutputStream fw = new FileOutputStream("D:\\11Codingtext\\MyIO\\a.txt");fw.write(str.getBytes(StandardCharsets.UTF_8));fw.close();}
}

 

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

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

相关文章

【NR 定位】3GPP NR Positioning 5G定位标准解读(十五)-UL-TDOA 定位

前言 3GPP NR Positioning 5G定位标准:3GPP TS 38.305 V18 3GPP 标准网址:Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读(一)-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读(…

Linux:时间指令 - cal date

Linux:时间指令 - cal & date date指令cal指令 date指令 date用于以指定格式显示时间 我们先看看直接输入date指令的效果: [hxyiZ2zehtehrgzt3wqccrpyfZ CSDN]$ date Tue Mar 12 21:38:01 CST 2024直接输入date指令,得到了以 星期 月 日…

C#,数值计算,解微分方程的龙格-库塔二阶方法与源代码

1 微分方程 含有导数或微分的方程称为微分方程,未知函数为一元函数的微分方程称为常微分方程。 微分方程的阶数 微分方程中导数或微分的最高阶数称为微分方程的阶数。 微分方程的解 使得微分方程成立的函数称为微分方程的解。 微分方程的特解 微分方程的不含任意常数的解称…

软考介绍的创新技术

本博客地址:https://security.blog.csdn.net/article/details/136632895 一. 信息物理系统 1、信息物理系统(CPS)通过集成先进的感知、计算、通信、控制等信息技术和自动控制技术,构建了物理空间与信息空间中人、机、物、环境、…

蚂蚁集团2025届暑期实习开始啦~

蚂蚁集团2025届暑期实习开始啦~欢迎大家投递信贷事业群-风险管理部的算法岗,找我内推哦~社招也有hc,欢迎大家沟通!

LeetCode 2129.将标题首字母大写:模拟(一个变量记录是否该大写)

【LetMeFly】2129.将标题首字母大写:模拟(一个变量记录是否该大写) 力扣题目链接:https://leetcode.cn/problems/capitalize-the-title/ 给你一个字符串 title ,它由单个空格连接一个或多个单词组成,每个…

STM32CubeIDE基础学习-STM32CubeIDE软件代码编写格式问题

STM32CubeIDE基础学习-STM32CubeIDE软件代码编写格式问题 前言 代码编写最好就是规定一个格式,或者建立一个偏好,这样写出来的代码就方便自己管理了,不然代码乱放下次打开工程就很难找到具体位置,如果规定了格式,那么…

Git 系列:简介安装以及配置管理

文章目录 简介安装简介Centos安装 配置管理[git help](https://www.git-scm.com/docs/git-help)概要选项示例git-doc [git config](https://www.git-scm.com/docs/git-config)概要选项变量示例 初始化配置 简介安装 简介 https://git-scm.com/ Git是一个开源的分布式版本控制…

软件测试知识面试题:测试计划关键、BUG流程、BUG描述、测试的整体覆盖率

文章目录 做好测试计划工作的关键是什么?公司的BUG流程是什么?如何提交一个好的bug?BUG描述包含哪些内容?讲述自己在项目中发现最有意义的一个 BUG,是什么导致出现这个问题?(例子)对…

Python 进行把图片转换为pdf

文章目录 Python 进行把图片转换为pdfPDF文件格式什么是PyMuPDF使用demo Python 进行把图片转换为pdf PDF文件格式 可移植文档格式(PDF)属于最常用的数据格式。在1990年,PDF文档的结构由Adobe定义。PDF格式的思想是,对于通信过程…

理论学习:Softmax层和全连接层 全连接层之前的数据

Softmax层和全连接层 Softmax层和全连接层在深度学习模型中通常是紧密相关的,经常一起使用。 全连接层(也称为线性层或密集连接层)是深度学习模型中常见的层之一,它将输入张量与权重矩阵相乘,并添加偏置项,…

酒店宾馆医院IPTV电视系统质保期满后怎样进行维护?-酒店宾馆医院IPTV电视系统质保期满常年巡检售后服务攻略

酒店宾馆医院IPTV电视系统质保期满后怎样进行维护?-酒店宾馆医院IPTV电视系统质保期满常年巡检售后服务攻略 北京海特伟业任洪卓发布于2024年3月11日 一、酒店IPTV电视系统简述 酒店IPTV电视系统,是新时代“互联网”在酒店领域的重要应用之一&#xff…

15双体系Java学习之数组的声明和创建

数组的声明 ★小贴士 可以使用int[] a;或者int a[];建议使用第一种风格,因为它将元素类型int[](整型数组)与变量名清晰分开了。 在Java中声明数组时不能指定其长度。这种定义是非法的:int a[5]; 注意:上图显示的内存…

JDBC连接MysqL

import java.sql.*;public class Demo {public static void main(String[] args) throws ClassNotFoundException, SQLException {//1.注册驱动,加载驱动;Class.forName("com.mysql.jdbc.Driver");//2.获得连接,返回connection类型的对象&…

重学SpringBoot3-集成Thymeleaf

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Thymeleaf 1. 添加Thymeleaf依赖2. 配置Thymeleaf属性(可选)3. 创建Thymeleaf模板4. 创建一个Controller5. 运行应用并访问页…

数学建模-模糊性综合评价模型

中医药是中国传统文化的重要组成部分,凝聚了中华民族千百年来智慧的结晶。作为中医的发源地,中国政府一直致力于保护、发展和推广中医药,采取了一系列政策措施[]。目前,中国面临着老龄化日益加剧,老年人群中慢性疾病和…

PyTorch学习笔记(四)

2.8 torch.logspace函数讲解 torch.logspace 函数在 PyTorch 中用于生成一个在对数尺度上均匀分布的张量(tensor)。这意味着张量中的元素是按照对数间隔排列的,而不是线性间隔。这对于创建在数值上跨越多个数量级的序列特别有用,…

在家不无聊,赚钱有门道:5个正规线上赚钱平台,轻松开启副业

随着网络技术的快速发展,越来越多的人开始寻求通过网络来探索兼职副业的可能性,期望实现额外的收入。在这个过程中,选择一个正规且可靠的线上兼职平台显得尤为关键。 为此小编精心网上盘点了5个正规且靠谱的线上兼职副业平台。这些平台不仅安…

双环PID控制详细讲解

参考博客: (1)PID双环控制(速度环和位置环) (2)PID控制(四)(单环与双环PID) (3)内外双环pid算法 0 单环PID 目标位置→系…

Promise图解,Pass

10-优化代码_哔哩哔哩_bilibili