编码转换流

字节流:针对二进制文件
字符流:针对文本文件,读写容易出现乱码的现象,在读写时,最好指定编码集为UTF-8

1 概述

编码转换流(InputStreamReader/OutputStreamWriter)主要进行编码的转换,用来解决字符流读写乱码的问题

2 工具API学习

OutputStreamWriter :
OutputStreamWriter(OutputStream out)把传入的字节流转成字符流
OutputStreamWriter(OutputStream out ,String charsetName)把Unicode转成其他编码输出

InputStreamReader :
InputStreamReader(InputStream in) 把传入的字节流转成字符流
InputStreamReader(InputStream in,String charsetName)读取其他编码转成Unicode

3 常见字符编码表

4 练习:编码转换测试

创建包: cn.tedu. encoding
创建类: TestEncode.java

package cn.tedu.encoding;import java.io.*;/*本类用于测试编码转换流*/
public class TestEncode {public static void main(String[] args) {method1();//用来测试OutputStreamWritermethod2();//用来测试InputStreamReader}private static void method2() {//1.创建一个在本方法中都生效的局部变量,并给变量初始化InputStreamReader in = null;//2.由于IO操作可能会抛出异常,所以需要try-catch-finally结构try{//3.创建针对于输入流的编码转换流对象in = new InputStreamReader(new FileInputStream("1.txt"),"utf-8");//new FileInputStream("1.txt"),"gbk");//new FileInputStream("1.txt"),"iso-8859-1");//4.使用流读取数据,并将读取到的信息打印在控制台//read方法的返回值类型是int,打印的是编码//UTF-8-28023    gbk-23092   iso-8859-1-230//System.out.println(in.read());//拓展:将刚刚读到的数据,以中文的格式展示在控制台char[] ch = new char[8192];//Reader中的方法:read(char[] cbuf)将字符读入数组,返回读取到的字符的个数int len = in.read(ch);//len保存的是读取到的字符的个数//此处是String的构造函数,利用ch数组中的数据,构建一个字符串,并打印到控制台System.out.println(new String(ch,0,len));System.out.println("恭喜您!成功读取!");}catch (Exception e){System.out.println("很抱歉!读取失败!");e.printStackTrace();}finally {//5.关流try {in.close();} catch (IOException e) {e.printStackTrace();}}}private static void method1() {//1.创建一个在本方法中都生效的局部变量,并给变量初始化OutputStreamWriter out = null;//2.由于代码可能会产生IO异常,所以需要完成try-catch-finally结构try{//3.创建流对象out = new OutputStreamWriter(new FileOutputStream("1.txt"),"utf-8");//new FileOutputStream("1.txt"),"iso-8859-1");//new FileOutputStream("1.txt"),"gbk");//4.使用流对象写出数据out.write("海绵宝宝与派大星");System.out.println("执行成功!");}catch (Exception e){System.out.println("执行失败!");e.printStackTrace();}finally {//5.关流try {out.close();} catch (IOException e) {e.printStackTrace();}}}
}

新手小白学java 编码转换流 OutputStreamWriter InputStreamReader相关推荐

  1. 新手小白学JAVA 日期类Date SimpleDateFormat Calendar

    1. Date日期类 类 Date 表示一个特定的瞬间,精确到毫秒 1.1 Date的构造函数 Date() 分配一个 Date 对象,以表示分配它的时间(精确到毫秒) Date(long date) ...

  2. 新手小白学JAVA Set HashSet Map HashMap

    1 Map接口 1.1 概述 Java.util接口Map<K,V> 类型参数 : K - 表示此映射所维护的键 V – 表示此映射所维护的对应的值 也叫做哈希表.散列表. 常用于键值对结 ...

  3. 新手小白学JAVA 分支结构 switch结构 for循环

    1 分支结构 1.1 概述 顺序结构的程序虽然能解决计算.输出等问题 但不能做判断再选择.对于要先做判断再选择的问题就要使用分支结构 1.2 形式 1.3.1 练习:商品打折案例 创建包: cn.te ...

  4. 新手小白学JAVA 泛型 Collection List Set

    集合 我们接下来要学习的内容是Java基础中一个很重要的部分:集合 1 Collection接口 1.1 集合前言 Java语言的java.util包中提供了一些集合类,这些集合类又称之为容器 提到容 ...

  5. 新手小白学JAVA 面向对象之多态

    多态 1. 概念 多态是面向对象程序设计(OOP)的一个重要特征,指同一个实体同时具有多种形式,即同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态. 可以把不同的子类对象都当作父类来看, ...

  6. 新手小白学JAVA JUnit单元测试方法

    JUnit单元测试 1.前言 之前我们去运行程序只能通过main(),也就是程序的主函数来运行,那么就会出现这样的问题:我们如果想要测试,就需要运行main()中所有的代码,这会导致,本来我们只是想测 ...

  7. 1.9 Java转换流:InputStreamReader和OutputStreamWriter

    正常情况下,字节流可以对所有的数据进行操作,但是有些时候在处理一些文本时我们要用到字符流,比如,查看文本的中文时就是需要采用字符流更为方便.所以 Java IO 流中提供了两种用于将字节流转换为字符流 ...

  8. 小白学Java Web 3 Web前端之CSS基本知识2

    这一篇接着上一篇的内容来分享,上一篇还有大量的样式属性没有列出,不过在继续分享之前,我想先来分享一下关于网页的布局相关的一些东西,因为下一篇我打算分 享用仅仅前面三小篇的内容来制作一个简单的静态网页, ...

  9. java编程好学么_零基础小白学Java编程好学吗

    Java是一门不会衰落的开发语言,伴随着IT行业的兴起,目前学习java培训的人员也是变得更多了,但要想学好java的话通过自学是没有那样非常容易的事情.尤其是对于初学者的学生而言,那么零基础小白学J ...

最新文章

  1. 网络基础 + 简易服务端和客户端
  2. linux efi 双系统,EFI+GPT模式下Linux与Windows双系统要诀
  3. python可以在excel中应用吗,python怎样在excel中应用?-Python教程
  4. 使用C#开发一个简单的P2P应用
  5. 1.11 多于空间维度的向量组
  6. wso2 esb_WSO2 ESB的一种消息传递方式
  7. 三星电子第二季芯片需求大增 但手机销售疲软
  8. linux 安装simg2img,linux可执行文件执行时提示No such file or directory(docker环境中运行的ubuntu镜像)...
  9. matlab gui 钢琴,基于MATLAB中的GUI设计的钢琴界面设计并能发声
  10. ea6500 v1 刷梅林_Linksys EA6500刷ddwrt成功记
  11. 亚丁号云控之发布任务
  12. tensorflow+python flask进行手写识别_python+flask搭建CNN在线识别手写中文网站!简直太屌了!...
  13. 1335:【例2-4】连通块——dfs、bfs
  14. CouchDB的简单使用
  15. 工信部:发挥、坚持、强化,做数字化转型主力军
  16. 语法俱乐部2:名词短语与冠词
  17. 安装SQL2008时遇到未能加载文件或file:///d:microsoft..sql.chainer.packagedata.dll或它的某个依赖项
  18. Codex Popup List
  19. windows环境下anaconda-navigaotr出现adding featured channels一直打不开的情况
  20. 代码配置没有问题下srpingMvc依然返回404找不到指定页面

热门文章

  1. Oracle应用之merge合并更新函数
  2. 2019网名最新版的
  3. 特色在哪?深度剖析3D游戏画面
  4. MMM互助社区是不是真的,有没有风险
  5. OpenNI + OpenCV
  6. 树莓派(Raspberry Pi),如何在命令行下配置查看WIFI无线网络
  7. 大数据之------------数据中台
  8. 织梦dedecms程序安全设置
  9. 【论文阅读】三.基于智能网联车的信号交叉口更易受到拥堵型攻击
  10. app常见功能模块及其使用简单介绍