Java重修笔记 第六十四天 坦克大战(十四)IO 流 - 标准输入输出流、InputStreamReader 和 OutputStreamWriter

  • 标准输入输出流
1. System.in 标准输入流

        本质上是一个InputString,对应键盘,表示从键盘输入。

        定义:public final static InputStream in = null;

        所以 Scanner scanner = new Scanner(System.in); 会从键盘中获取数据

2. System.out 标准输出流

        本质上是一个OutputStream,对应显示器,不过被包装成了PrintStream,表示在显示器上输出。

        定义:public final static PrintStream out = null;

        所以 System.out.println(); 就是使用 out 对象将数据输出到显示器上。

  • 转换流

1. 为了解决使用读写源文件时出现的乱码问题(字符编码不一致),引出转换流

2. InputStreamReader 是 Reader 的子类,代码可以将 InputStream 字节流包装(转换)成指定编码的 Reader 字符流

3. OutputStreamWriter 是 Writer 的子类,可以将 OutputStream 字节流包装(转换)成指定编码的 Writer 字符流

4. 当处理存文本数据时,使用字符流的效率更高

  • InputStreamReader 类的常用方法
1. 使用特定编码方式包装字节输入流的构造方法

        public InputStreamReader(InputStream in, Charset cs)

        参数:in - 一个 InputStream 子类下的输入流

                   cs - 一个字符串类型的字符集

2. 获得该转换流所使用的编码方式

        public String getEncoding()

3. 关闭流

        public void close() throws IOException

        说明:不管包装了多少个流,只需要关闭最外层的流就行

public class InputStreamReader01 {public static void main(String[] args) throws IOException {// 演示使用转换流解决中文乱码的问题, 通过转换流 将字节流 转换成指定编码的字符流String filePath = "d:\\a.txt";FileInputStream fis = new FileInputStream(filePath);// 将字节流转换成转换流// InputStreamReader isr = new InputStreamReader(fis, "UTF-8");InputStreamReader isr = new InputStreamReader(fis, StandardCharsets.UTF_8);// 将转换流又转换成包装流BufferedReader br = new BufferedReader(isr);// 读取String s = br.readLine();System.out.println("编码方式为: " + isr.getEncoding());System.out.println("读取到的第一行为: " + s);br.close();}
}

  • OutputStreamWriter 类的常用方法

1. 使用特定编码方式包装字节输出流的构造方法

        public OutputStreamWriter(OutputStream out, Charset cs)

        参数:out - 一个 OutputStream 子类下的输出流

                   cs - 一个字符串类型的字符集

2. 关闭流

        public void close() throws IOException

        说明:不管包装了多少个流,只需要关闭最外层的流就行,如果不关闭或刷新流,东西写不进去

public class OutputStreamWriter01 {public static void main(String[] args) throws IOException {String filePath = "d:\\a.txt";FileOutputStream fos = new FileOutputStream(filePath, true);OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8);BufferedWriter fw = new BufferedWriter(osw);fw.newLine();fw.write("通过转换流写入");fw.close();}
}

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

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

相关文章

AI教父荣获2024诺贝尔物理学奖:杰弗里·辛顿和他的深度学习之路!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,专注于分享AI全维度知识,包括但不限于AI科普,AI工…

Chrome浏览器调用ActiveX控件--allWebOffice控件功能介绍

allWebOffice控件概述 allWebOffice控件能够实现在浏览器窗口中在线操作微软Office及WPS办公文档的应用(阅读、编辑、保存等),支持编辑文档时保留修改痕迹,支持书签位置内容动态填充,支持公文套红,支持文档…

springMVC添加webapp

项目结构-->模块-->找到想添加的模块下的web 点击号 添加路径 会在.../src/main/目录下自动生成目录

Golang | Leetcode Golang题解之第467题环绕字符串中唯一的子字符串

题目: 题解: func findSubstringInWraproundString(p string) (ans int) {dp : [26]int{}k : 0for i, ch : range p {if i > 0 && (byte(ch)-p[i-1]26)%26 1 { // 字符之差为 1 或 -25k} else {k 1}dp[ch-a] max(dp[ch-a], k)}for _, v :…

【xilinx-versal】【Petalinux】I2C驱动开发问题记录

问题 调试中发现系统起来后无I2C设备。 仔细查找后发现没有配置versal的I2C控制器。 解决方法 打开versal的I2C控制器的配置 起来后I2C设备注册成功

使用idea和vecode创建vue项目并启动(超详细)

一、idea创建vue项目 创建项目之前先下载好插件 新建项目找到vue生成器 写好名称,找到自己需要存放的地址,node解释器安装方式可以看我上一个博客,vueCLI是选择vue的版本,我们可以使用idea自带的vue版本默认是vue3,创…

标准正态分布的数据 tensorflow 实现正态分布图,python 编程,数据分析和人工智能

import tensorflow as tf import matplotlib.pyplot as plt # 设置随机种子以获得可重复的结果 tf.random.set_seed(42) # 生成正态分布的数据 # mean0 和 stddev1 表示生成标准正态分布的数据 # shape(1000,) 表示生成1000个数据点 data tf.random.normal(mean0, stddev1, …

postman变量,断言,参数化

环境变量 1.创建环境变量 正式环境是错误的,方便验证环境变化 2.在请求中添加变量 3.运行前选择环境变量 全局变量 能够在任何接口访问的变量 console中打印日志 console.log(responseBody);//将数据解析为json格式 var data JSON.parse(responseBody); conso…

k8s中pod的管理

资源管理介绍 在kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理kubernetes。 kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务 所谓的部署服务,其实就是在kubernetes集群中运行一个个的容器&…

NLP: SBERT介绍及sentence-transformers库的使用

1. Sentence-BERT Sentence-BERT(简写SBERT)模型是BERT模型最有趣的变体之一,通过扩展预训练的BERT模型来获得固定长度的句子特征,主要用于句子对分类、计算两个句子之间的相似度任务。 1.1 计算句子特征 SBERT模型同样是将句子标记送入预训练的BERT模型…

Web3 游戏周报(9.22 - 9.28)

回顾上周的区块链游戏概况,查看 Footprint Analytics 与 ABGA 最新发布的数据报告。 【9.22-9.28】Web3 游戏行业动态: Axie Infinity 将 Fortune Slips 的冷却时间缩短至 24 小时,从而提高玩家的收入。 Web3 游戏开发商 Darkbright Studios…

【源码+文档+调试讲解】二手物品调剂系统NODEJS

摘 要 二手物品调剂系统是一种在线平台,旨在促进用户之间的二手物品交易。该系统提供了一个方便的界面,让用户能够发布、浏览和搜索二手物品信息。用户可以根据自己的需求和兴趣,筛选出合适的物品,并通过系统与卖家进行联系。系统…

手撕Python之生成器、装饰器、异常

1.生成器 生成器的定义方式&#xff1a;在函数中使用yield yield值&#xff1a;将值返回到调用处 我们需要使用next()进行获取yield的返回值 yield的使用以及生成器函数的返回的接收next() def test():yield 1,2,3ttest() print(t) #<generator object test at 0x01B77…

气象大模型预测天气预报的原理

随着气象科学的发展&#xff0c;气象预报已经从早期的经验判断发展到基于数值模拟的高精度预测。气象大模型&#xff0c;作为一种强大的计算工具&#xff0c;利用大规模数据和复杂的物理模型&#xff0c;提供了精准的天气预报服务。本文将介绍气象大模型的原理&#xff0c;以及…

嵌入式面试——FreeRTOS篇(六) 任务通知

本篇为&#xff1a;FreeRTOS 任务通知篇 任务通知简介 1、任务通知介绍 答&#xff1a; 任务通知&#xff1a;用来通知任务的&#xff0c;任务控制块中的结构体成员变量ulNotifiedValue就是这个通知值。 使用队列、信号量、事件标志组时都需要另外创建一个结构体&#xff0c…

新个性化时尚解决方案!Prompt2Fashion:自动生成多风格、类型时尚图像数据集。

今天给大家介绍一种自动化生成时尚图像数据的方法Prompt2Fashion。 首先创建了一组描述&#xff0c;比如“适合婚礼的休闲风格服装”&#xff0c;然后用这些描述来指导计算机生成图像。具体来说&#xff0c;他们使用了大型语言模型来写出这些服装的描述&#xff0c;接着将这些描…

SpringBoot统一日志框架

在项目开发中&#xff0c;日志十分的重要&#xff0c;不管是记录运行情况还是定位线上问题&#xff0c;都离不开对日志的分析。 1.日志框架的选择 市面上常见的日志框架有很多&#xff0c;它们可以被分为两类&#xff1a;日志门面&#xff08;日志抽象层&#xff09;和日志实…

【万字长文】Word2Vec计算详解(三)分层Softmax与负采样

【万字长文】Word2Vec计算详解&#xff08;三&#xff09;分层Softmax与负采样 写在前面 第三部分介绍Word2Vec模型的两种优化方案。 【万字长文】Word2Vec计算详解&#xff08;一&#xff09;CBOW模型 markdown行 9000 【万字长文】Word2Vec计算详解&#xff08;二&#xff0…

网站集群批量管理-Ansible(playbook)

1.剧本概述 1. playbook 文件,用于长久保存并且实现批量管理,维护,部署的文件. 类似于脚本存放命令和变量 2. 剧本yaml格式,yaml格式的文件:空格,冒号 2. 区别 ans-playbookans ad-hoc共同点批量管理,使用模块批量管理,使用模块区别重复调用不是很方便,不容易重复场景部署服务…

LeetCode讲解篇之377. 组合总和 Ⅳ

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 总和为target的元素组合个数 可以由 总和为target - nums[j]的元素组合个数 转换而来&#xff0c;其中j为nums所有元素的下标 而总和target - nums[j]的元素组合个数 可以由 总和为target - nums[j] - nums[k]的…