当前位置: 首页 > news >正文

JavaSE--IO流总览06:字符转换输入(输出)流: InputStreamReader ,OutputStreamWrite

IO流体系(学到哪扩展到哪):

学习字符转换流的目的是为了什么?

InputStreamReader---解决不同编码时字符流读取文本内容乱码的问题

OutPutStreamWrite---可以控制写出去的字符使用什么字符集编码

为什么会有乱码呢?因为读取的文件内容编码与平台运行代码默认的UTF-8编码不同导致解读出错

为什么要控制字符集编码?为了满足写的文件的编码方式

一. 字符转换输入流(InputStreamReader)

目的:解决不同编码时字符流读取文本内容乱码的问题

解决思路:先获取文件的原始字节输入流,再将其按真实的字符集编码转成字符输入流 这样字符输入流中的字符就不会乱码了

构造器: 1.new InputStreamReader(new InputStream("文件地址"))---默认utf-8

                2.new InputStreamReader(new InputStream("文件地址"),"字符集编码类型")

实例:读取下面文件的内容:注意编码“GBK”


分析:这个时候就不能上面的构造器1,因为默认UTF-8编码和文件的编码GBK不同,会乱码。就只能使用构造器2,设置解读的编码为GBK     

  2.new InputStreamReader(new InputStream("文件地址"),"GBK")

步骤

先创建低级字节输入流,再包装成字符转换输入流这个时候编写读取的编码形式,再包装成缓冲流---提速 ,最后读取代码。 

这里使用了自动关闭流的方法try-with-resource,详见传送门:http://t.csdnimg.cn/8hXRz

为什么这里是(text=br.readLine())!=null 因为readLine() 读取一行的字符数据 没有就返回null

详见传送门:http://t.csdnimg.cn/rvlP8

运行结果:

二.字符转换输出流(OutputStreamWriter)

目的:可以控制写出去的字符使用什么字符集编码

解决思路:获取字节输出流 再按照指定的字符集编码将其转换成字符输出流,以后写出去的字符就会用该字符集编码

补充刷新流知识:OutputStreamWriter与BufferedWriter一样,OutputStreamWriter也有flush()方法,可以手动刷新输出流,将缓冲区中的数据写入到目标中。但是和BufferedWriter不同的是,OutputStreamWriter是在流关闭时会自动刷新缓冲区的,所以在使用OutputStreamWriter时,不需要手动调用flush()方法来刷新输出流。只需要在不再需要使用流时,关闭流即可

构造器:OutputStreamWriter out=new OutputStreamWriter(低级字节输出流,"编码类型")

要控制写出去的字符使用什么字符集编码 该怎么做:
1.使用String提供的getByets方法解决    String date="我爱你了";bytes[] ar= date.getBytes("GBK")
2.使用  字节转换输出流  实现

这里介绍的是字符转换输出流喔:

步骤:创建低级字节输出流,再包装成字符转换输出流这个时候设置写的文件编码格式,再使用缓冲流进行包装--提速,最后就是写数据进文件

具体实例:

注意:运行第二次的时候不会追加相同的数据了,解决方法就是,在低级字节输出流创建时的地址后加true:

以上就是关于文件与代码编码不同的解决方法,至此完毕。

感谢各位大佬观看,求免费的赞和收藏关注喔!!!

相关文章:

JavaSE--IO流总览06:字符转换输入(输出)流: InputStreamReader ,OutputStreamWrite

IO流体系(学到哪扩展到哪): 学习字符转换流的目的是为了什么? InputStreamReader---解决不同编码时字符流读取文本内容乱码的问题 OutPutStreamWrite---可以控制写出去的字符使用什么字符集编码 为什么会有乱码呢?因为读取的文件内容编码与…...

浙版传媒思迈特软件大数据分析管理平台建设项目正式启动

近日,思迈特软件与出版发行及电商书城领域的领军企业——浙江出版传媒股份有限公司,正式启动大近日,思迈特软件与出版发行及电商书城领域的领军企业——浙江出版传媒股份有限公司,正式启动大数据分析管理平台建设项目。浙版传媒相…...

漏洞——CVE简介

1、什么是CVE CVE (Common Vulnerabilities and Exposures)(常见漏洞与暴露)是一个标准化的命名系统,用于识别和描述公开披露的网络安全漏洞。CVE 的目的是为漏洞提供唯一的标识符,使安全专家、软件供应商和用户能够统一参考和讨…...

IT行业中的技术趋势与未来展望

IT行业中的技术趋势与未来展望 IT行业作为全球经济发展的重要引擎,正在以惊人的速度推动着科技进步与创新。随着技术的不断演进,一些新的趋势正悄然改变着我们的工作方式和生活方式。本文将探讨当前IT行业中的主要技术趋势以及未来展望,帮助…...

解决 webpack 配置 sass-loader后报错,无法正常build

1. 问题描述 总是打包build报错,本质上css样式语法也没写错在使用 sass-resources-loader 的项目中,开发者常常遇到构建错误或意外的样式行为,这是因为 sass-resources-loader 的作用和使用场景并不总是被正确理解。sass-resources-loader 主…...

CentOS中使用DockerCompose方式部署带postgis的postgresql(附kartoza/docker-postgis镜像下载)

场景 CentOS中使用Docker部署带postgis的postgresql: CentOS中使用Docker部署带postgis的postgresql_centos postgis插件在容器中如何安装-CSDN博客 上面使用Docker搜索和拉取kartoza/postgis时并没有任何限制。 当下如果不能科学上网时,大部分镜像源…...

初识elasticsearch

初识elasticsearch 1.什么是elasticsearch 一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能;elasticsearch 是结合kibana、Logstash、Beats,也就是elastic stach(ELK)。被广泛应用在日志数据分析、实时监控等领域。 elastic…...

react hooks--React.memo

基本语法 React.memo 高阶组件的使用场景说明: React 组件更新机制:只要父组件状态更新,子组件就会无条件的一起更新。 子组件 props 变化时更新过程:组件代码执行 -> JSX Diff(配合虚拟 DOM)-> 渲…...

App端测——稳定性测试

稳定性测试项:Crash、ANR、OOM、内存泄漏 crash:应用崩溃,从提测后开始关注,monkey持续上报跟踪 ANR:系统无响应,使用低端机内存小的机型测试,及monkey中关注ANR问题。关于ANR详细&#xff1a…...

[数据结构与算法·C++] 笔记 1.4 算法复杂性分析

1.4 算法复杂性分析 算法的渐进分析 数据规模 n 逐步增大时, f(n)的增长趋势当 n 增大到一定值以后,计算公式中影响最大的就是 n 的幂次最高的项其他的常数项和低幂次项都可以忽略 大O表示法 函数f,g定义域为自然数,值域非负实数集定义: …...

Hive parquet表通过csv文件导入数据

1. background 已建好了 hive parquet 格式的表, 需要从服务器的csv导入数据至该hive表 2. step 提前上传csv至服务器 /path/temp.csv 创建 textfile 格式的中转表(这里使用内部表,方便删除) ,源表名dw_procurement.dwd_tc_comm_plant ,这里中转表加上了csv后缀 CREATE TA…...

C++ 构造函数最佳实践

文章目录 1. 构造函数应该做什么1.1 初始化成员变量1.2 分配资源1.3 遵循 RAII 原则1.4 处理异常情况 2. 构造函数不应该做什么2.1 避免做大量的工作2.2 不要在构造函数中调用虚函数2.3 避免在构造函数中执行复杂的初始化逻辑2.4 避免调用可能抛出异常的代码 3. 构造函数的其他…...

C++——关联式容器(4):set和map

在接触了诸如二叉搜索树、AVL树、红黑树的树形结构之后,我们对树的结构有了大致的了解,现在引入真正的关联式容器。 首先,先明确了关联式容器的概念。我们之前所接触到的如vector、list等容器,我们知道他们实际上都是线性的数据结…...

Spring Mybatis 基本使用 总结

1. 简介 Mybatis库可以简化数据库的操作&#xff0c;专注于sql语句。 2.搭建步骤 2.1 在pom.xml引入mybatis <dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.11</version> </dep…...

接口幂等性和并发安全的区别?

目录标题 幂等性并发安全总结 接口幂等性和并发安全是两个不同的概念&#xff0c;虽然它们在设计API时都很重要&#xff0c;但侧重点不同。 幂等性 定义&#xff1a;幂等性指的是无论对接口进行多少次相同的操作&#xff0c;结果都是一致的。例如&#xff0c;HTTP的PUT和DELE…...

【记录一下VMware上开虚拟端口映射到公网】

材料 win11 和装在vmware上的ubuntu 步骤一在Ubuntu上配置静态地址&#xff0c;配置如下 vim /etc/netplan/01-network-manager-all.yaml(此文件看系统上对应的是哪个文件&#xff0c;建议先备份)network:version: 2renderer: NetworkManagerethernets:ens33:dhcp4: falseadd…...

半导体器件制造5G智能工厂数字孪生物联平台,推进制造业数字化转型

半导体器件制造行业作为高科技领域的核心驱动力&#xff0c;正积极探索和实践以5G智能工厂数字孪生平台为核心的新型制造模式。这一创新不仅极大地提升了生产效率与质量&#xff0c;更为制造业的未来发展绘制了一幅智能化、网络化的宏伟蓝图。 在半导体器件制造5G智能工厂中&a…...

数据结构之存储位置

p 和 "hello,world"存储在内存哪个区域&#xff1f;( ) (鲁科安全) int main() { char *p "hello,world"; return 0; } p是栈区&#xff0c;”hello,world”是.ro段 一个由C/C编译的程序&#xff0c;会将占用的内存分为几个部分&#xff1a;堆、栈、代…...

传输层协议(TCP和UDP)

目录 一、UDP 1、UDPAPI 2、UDPAPI的使用 二、TCP 1、TCPAPI 2、TCP的相关特性 2.1 确认应答 2.2 超时重传 2.3 连接管理&#xff08;三次握手&#xff0c;四次挥手&#xff09; 2.4 滑动窗口 2.5 流量控制 2.6 拥塞控制 2.7 延时应答 2.8 捎带应答 2.9 面向字节…...

智能仓库|基于springBoot的智能无人仓库管理设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书&#xff08;可指定任意题目&#xff09; 目录 一、摘要 二、相关技术 三、系统设计 四、数据库设计 五、核心代码 六、论文参考 七、源码获取 一、摘要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xf…...

SNOMED CT入门指南:从概念、关系到数据文件,手把手带你理解这个医学术语标准

SNOMED CT技术解析&#xff1a;从数据结构到医疗信息系统的实战指南 在医疗信息化领域&#xff0c;数据标准化是打破信息孤岛的关键。当不同医院的电子病历系统使用各自独立的术语体系时&#xff0c;跨机构的数据交换就像一场没有翻译的多国会议——充满误解和低效。这正是SNOM…...

Claude Code + DeepSeek:用自然语言从PRD到上线的打地鼠游戏全流程实录

Claude Code DeepSeek&#xff1a;用自然语言从PRD到上线的打地鼠游戏全流程实录 最近在技术社区里&#xff0c;一个有趣的趋势正在兴起——开发者们开始尝试用自然语言描述需求&#xff0c;然后让AI编程助手自动完成从文档编写到代码生成的全流程。这听起来像科幻小说里的场景…...

保姆级教程:在Ubuntu上复现‘easy溯源’靶场,手把手教你分析反弹Shell和内网穿透痕迹

在Ubuntu上复现‘easy溯源’靶场&#xff1a;从环境搭建到痕迹分析实战指南 当你第一次接触应急响应时&#xff0c;是否曾被各种专业术语和复杂场景搞得晕头转向&#xff1f;本文将带你从零开始&#xff0c;在Ubuntu系统上完整复现一个名为easy溯源的靶场环境。这不是简单的解题…...

不用反向传播也能攻击AI模型?手把手教你用ZOO算法实现黑盒对抗攻击

零阶优化实战&#xff1a;无需反向传播的黑盒对抗攻击指南 当你在网络安全竞赛中遇到一个闭源的图像识别API&#xff0c;或是需要测试自家电商平台商品分类模型的鲁棒性时&#xff0c;传统基于梯度反向传播的白盒攻击方法立刻变得束手无策。这就是ZOO&#xff08;Zeroth Order …...

OpenVSCode Server数据安全终极指南:完整备份与恢复策略

OpenVSCode Server数据安全终极指南&#xff1a;完整备份与恢复策略 【免费下载链接】openvscode-server 项目地址: https://gitcode.com/gh_mirrors/op/openvscode-server OpenVSCode Server是一款强大的云端代码编辑器&#xff0c;让开发者能够在浏览器中享受完整的V…...

Stable Diffusion Lora训练避坑指南:为什么你的模型总是‘丑’?

Stable Diffusion LoRA训练实战&#xff1a;从“翻车”到精通的避坑手册 每次看到别人分享的精致LoRA模型&#xff0c;再看看自己训练出的"克苏鲁风格"作品&#xff0c;是不是有种砸键盘的冲动&#xff1f;别急着放弃——这可能是你训练流程中几个关键环节出了问题。…...

掺氢燃气轮机Simulink动态仿真模型探索

掺氢燃气轮机simulink动态仿真模型 1. 西门子5MW和260MW(v94.3a)模型设计点 2. 可选择加pid控制或开环动态仿真模型 3. 功率可以为输入也可以为输出&#xff0c;供选择 4. 掺氢气比例可以动态调节 5. 输出参数包括燃烧室出口温度&#xff0c;流量&#xff0c;动力涡轮出口温度&…...

别再只盯着RTK了!聊聊GNSS/INS组合导航里,紧耦合如何用1颗卫星‘吊住’你的定位

1颗卫星的逆袭&#xff1a;紧耦合技术如何在极端环境下守护你的定位精度 想象一下&#xff0c;你正驾驶一辆L4级自动驾驶汽车穿越曼哈顿的钢铁森林。高楼间的"城市峡谷"让GPS信号时断时续&#xff0c;传统导航系统已经开始报警——"卫星信号丢失"。但你的车…...

draw.io桌面版终极指南:离线绘图革命与数据主权回归

draw.io桌面版终极指南&#xff1a;离线绘图革命与数据主权回归 【免费下载链接】drawio-desktop Official electron build of draw.io 项目地址: https://gitcode.com/GitHub_Trending/dr/drawio-desktop 你是否曾因网络中断而无法完成重要的图表设计&#xff1f;是否担…...

如何用AI在3分钟内自动生成专业视频:告别复杂剪辑的全新解决方案

如何用AI在3分钟内自动生成专业视频&#xff1a;告别复杂剪辑的全新解决方案 【免费下载链接】auto-video-generateor 自动视频生成器&#xff0c;给定主题&#xff0c;自动生成解说视频。用户输入主题文字&#xff0c;系统调用大语言模型生成故事或解说的文字&#xff0c;然后…...