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

重学java 66.IO流 转换流

且敬我疯狂,生命中不败的篇章

                                        —— 24.6.11

一、字符编码

        计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。[按照某种规则,将字符存储到计算机中,称为编码。]反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为“解码”。比如说,按照A规则存储,同样按照A规则解析,那么就能显示正确的文本f符号。反之,按照A规则存储,再按照B规则解析,就会导致乱码现象。

        字符编码 character Encoding:就是一套自然语言的字符二进制数之间的对应规则

二、字符集

        字符集 charset:也叫编码表。是一个系统支持的所有字符的集合,包括各国家文字、标点符号、图形符号、数字等。

        计算机要准确的存储和识别各种字符集符号,需要进行字符编码,一套字符集必然至少有一套字符编码。常见字符集有ASCII字符集、GBK字符集、Unicode字符集等。

        1.想要不乱码,编码和解码遵循的规则(字符编码)要一致,想要不乱码,最重要的是先知道这个字符按照什么编码去存的
        2.UTF-8中一个汉字占3个字节,GBK中一个汉字占2个字节

三、转换流 InputStreamReader

1.概述:

        是字节流通向字符流的桥梁 —> 读数据

2.构造:

        InputStreamReader(InputStream in,String charsetName)
                charsetName:指定编码,不区分大小写

3.作用:

        可以直接指定编码,按照指定的编码去内容

4.用法:

        基本用法和FileReader一样

5.示例:

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;public class Demo277InputStreamReader {public static void main(String[] args) throws IOException {InputStreamReader isr = new InputStreamReader(new FileInputStream("D:\\2LFE\\Desktop\\IO转换流.txt"),"GBK");int data = isr.read();System.out.println((char)data);isr.close();}
}

四、转换流 OutputStreamWriter

1.概述:

        是字符流通向字节流的桥梁 —> 写数据

2.构造:

        OutputstreamWriter(OutputStream out,String charsetName)        

3.作用:

        按照指定的编码规则去数据

4.用法:

        和Filewriter一样

5.示例:

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;public class Demo278OutputStreamReader {public static void main(String[] args) throws IOException {OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("AllWillBest_Java/src/S97IOReserveStream\\output.txt"), "UTF-8");osw.write("一切都会好的");osw.close();}
}

 

相关文章:

  • Linux-笔记 设备树插件
  • 3072. 将元素分配到两个数组中 II Rust 线段树 + 离散化
  • GIGE 协议摘录 —— GVSP 协议(三)
  • Web前端ES6-ES13笔记合集(下)
  • 【ARFoundation自学05】人脸追踪(AR Face manager)实现
  • 力扣1146.快照数组
  • Stable Diffusion详解
  • 添加L1/L2损失函数,以及AttributeError: ‘NoneType‘ object has no attribute ‘data‘
  • 【C++】基础复习 运算符|算数、关系、逻辑、赋值、位运算符
  • MMSegmentation改进:增加Kappa系数评价指数
  • 学习机火拼大模型:科大讯飞、学而思、网易有道赌上半条身家性命
  • 【C++——引用】
  • semaphore | 使用web界面的ansible来批量运维 linux、windows主机
  • Python pickle反序列化
  • 281 基于matlab的路径规划GUI交互
  • ----------
  • 【Amaple教程】5. 插件
  • 2019年如何成为全栈工程师?
  • Bootstrap JS插件Alert源码分析
  • const let
  •  D - 粉碎叛乱F - 其他起义
  • docker python 配置
  • HomeBrew常规使用教程
  • Laravel Telescope:优雅的应用调试工具
  • OSS Web直传 (文件图片)
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 简单基于spring的redis配置(单机和集群模式)
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 实现菜单下拉伸展折叠效果demo
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 我感觉这是史上最牛的防sql注入方法类
  • 我有几个粽子,和一个故事
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #pragma multi_compile #pragma shader_feature
  • ( 10 )MySQL中的外键
  • (12)Hive调优——count distinct去重优化
  • (JS基础)String 类型
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (办公)springboot配置aop处理请求.
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (汇总)os模块以及shutil模块对文件的操作
  • (十六)一篇文章学会Java的常用API
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (转)我也是一只IT小小鸟
  • (转载)hibernate缓存
  • .Net - 类的介绍
  • .NET Framework 服务实现监控可观测性最佳实践
  • .net Stream篇(六)
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET 动态调用WebService + WSE + UsernameToken
  • .net/c# memcached 获取所有缓存键(keys)