1、字节输出转换流(OutputStreamWriter)

 1 package iochange;
2
3 import java.io.*;
4
5 /*
6 java.io.OutputStreamWriter extends Writer
7
8 OutputStreamWriter: 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。(编码:把能看懂的变成看不懂)
9
10 继承自父类的共性成员方法:
11 - void write(int c) 写入单个字符。
12 - void write(char[] cbuf)写入字符数组。
13 - abstract void write(char[] cbuf, int off, int len)写入字符数组的某一部分,off数组的开始索引,len写的字符个数。
14 - void write(String str)写入字符串。
15 - void write(String str, int off, int len) 写入字符串的某一部分,off字符串的开始索引,len写的字符个数。
16 - void flush()刷新该流的缓冲。
17 - void close() 关闭此流,但要先刷新它。
18 构造方法:
19 OutputStreamWriter(OutputStream out)创建使用默认字符编码的 OutputStreamWriter。
20 OutputStreamWriter(OutputStream out, String charsetName) 创建使用指定字符集的 OutputStreamWriter。
21 参数:
22 OutputStream out:字节输出流,可以用来写转换之后的字节到文件中
23 String charsetName:指定的编码表名称,不区分大小写,可以是utf-8/UTF-8,gbk/GBK,...不指定默认使用UTF-8
24 使用步骤:
25 1.创建OutputStreamWriter对象,构造方法中传递字节输出流和指定的编码表名称
26 2.使用OutputStreamWriter对象中的方法write,把字符转换为字节存储缓冲区中(编码)
27 3.使用OutputStreamWriter对象中的方法flush,把内存缓冲区中的字节刷新到文件中(使用字节流写字节的过程)
28 4.释放资源
29 */
30
31 public class demo02osw {
32 public static void main(String[] args) throws IOException {
33 // OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("utf-8.txt"), "utf-8");
34 OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("gbk.txt"), "gbk");
35 osw.write("转换流");
36 osw.flush();
37 osw.close();
38 }
39 }

2、字节输入转换流(InputStreamReader)

 1 package iochange;
2
3 /*
4 java.io.InputStreamReader extends Reader
5
6 InputStreamReader:是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。(解码:把看不懂的变成能看懂的)
7
8 继承自父类的共性成员方法:
9 int read() 读取单个字符并返回。
10 int read(char[] cbuf)一次读取多个字符,将字符读入数组。
11 void close() 关闭该流并释放与之关联的所有资源。
12 构造方法:
13 InputStreamReader(InputStream in) 创建一个使用默认字符集的 InputStreamReader。
14 InputStreamReader(InputStream in, String charsetName) 创建使用指定字符集的 InputStreamReader。
15 参数:
16 InputStream in:字节输入流,用来读取文件中保存的字节
17 String charsetName:指定的编码表名称,不区分大小写,可以是utf-8/UTF-8,gbk/GBK,...不指定默认使用UTF-8
18 使用步骤:
19 1.创建InputStreamReader对象,构造方法中传递字节输入流和指定的编码表名称
20 2.使用InputStreamReader对象中的方法read读取文件
21 3.释放资源
22 注意事项:
23 构造方法中指定的编码表名称要和文件的编码相同,否则会发生乱码
24 */
25
26 import java.io.*;
27
28 public class demo01isr {
29 public static void main(String[] args) throws IOException {
30 // InputStreamReader isr = new InputStreamReader(new FileInputStream("utf-8.txt"),"utf-8");
31 InputStreamReader isr = new InputStreamReader(new FileInputStream("gbk.txt"), "gbk");
32 int len = 0;
33 while ((len = isr.read()) != -1) {
34 System.out.print((char) len);
35 }
36 isr.close();
37 }
38 }

# 总结:转换流和字节流看起来类似,但是区别在于字节流每次读取一个字节,每次只能对一个字节进行“翻译”。而转换流可以根据传入的编码格式对多个字节进行“翻译”。

转换流(InputStreamReader OutputStreamWriter)的更多相关文章

  1. 转换流InputStreamReader & OutputStreamWriter

    转换流InputStreamReader & OutputStreamWriter 比如当使用FileReader读取文件时,可以读取IDE默认的UTF-8编码的文件,但是当有一个文件是GBK ...

  2. [19/04/02-星期二] IO技术_字符流分类总结(含字符转换流InputStreamReader/ OutputStreamWriter,实现字节转字符)

    一.概念 ------->1.BufferedReader/BufferedWriter [参考19.03.31文章] *Reader/Writer-------->2.InputStre ...

  3. Java IO 流 -- 转换流: InputStreamReader OutputStreamWriter

    java 中 转换流是以字符流的形式操作字节流,需要注意一下两点: 1.操作内容必须是纯文本 2.指定字符集避免乱码 操作控制台输入输出: try (BufferedReader br = new B ...

  4. (25)IO流之转换流InputStreamReader和OutputStreamWriter

    InputStreamReader:字节到字符的桥梁. OutputStreamWriter:字符到字节的桥梁. 它们有转换作用,而本身又是字符流.所以在构造的时候,需要传入字节流对象进来. 构造函数 ...

  5. Java API —— 编码 & IO流( InputStreamReader & OutputStreamWriter & FileReader & FileWriter & BufferedReader & BufferedWriter )

    1.编码     1)编码表概述         由字符及其对应的数值组成的一张表     2)常见编码表         · ASCII/Unicode 字符集:ASCII是美国标准信息交换码,用一 ...

  6. JAVA之旅(二十七)——字节流的缓冲区,拷贝mp3,自定义字节流缓冲区,读取键盘录入,转换流InputStreamReader,写入转换流,流操作的规律

    JAVA之旅(二十七)--字节流的缓冲区,拷贝mp3,自定义字节流缓冲区,读取键盘录入,转换流InputStreamReader,写入转换流,流操作的规律 我们继续来聊聊I/O 一.字节流的缓冲区 这 ...

  7. 转换流--InputStreamReader ,OutputStreamWriter

    BufferedReader 字符流,只能装饰字符流,不能装饰字节流.有个重要且好用的方法是readLine()整行读取字符. 但是InputStream是字节流,没有resdLine方法,那么字节流 ...

  8. Java基础---Java---IO流-----读取键盘录入、InputStreamReader、转换流、OutputStreamWriter、InputStreamReader

    字符流: FileReader FileWriter BufferedReader BufferedWriter 字节流: FileInputStream FileOutputStream Buffe ...

  9. Java IO流学习总结五:转换流-InputStreamReader、OutputStreamWriter

    类的继承关系 Reader |__ BufferedReader.StringReader.InputStreamReader |__ FileReader Writer |__ BufferedWr ...

  10. io流之转换流InputStreamReader、OutputStreamWriter

    例子程序: package io; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.File ...

随机推荐

  1. 二、redis主从环境搭建

    系列导航 一.redis单例安装(linux) 二.redis主从环境搭建 三.redis集群搭建 四.redis增加密码验证 五.java操作redis 环境:centos7需要的安装包: redi ...

  2. [GFCTF 2021]web部分题解(更新中ing)

    [GFCTF 2021]Baby_Web 拿源码环节: 打开环境(◡ᴗ◡✿) 乍一看什么都没有,F12下没看到js文件,但是看到了出题师傅的提示:"源码藏在上层目录xxx.php.txt里面 ...

  3. 6 Englishi 词根

    9 pend/pends = hang 悬挂 depend   de 向下 independent   in 前缀 表否定: ent  adj后缀 suspend    sus=sub(便于发音) p ...

  4. lighthouse性能优化分析工具使用

  5. vue中mixin作用

  6. 在mounted 中发生异步和同步共存的问题

    https://www.cnblogs.com/ifon/p/12391923.html

  7. excel常用函数-countif与countifs

    countif用于一个条件的计数 countifs用于多个条件的计数,用法比较简单,如下: 注多条件计数的说明 :=COUNTIFS(条件匹配查询区域1,条件1,条件匹配查询区域2,条件2,以此类推. ...

  8. 如何使用Markdown编写笔记

    Markdown是什么? Markdown 是一种轻量级标记语言,创始人为约翰·格鲁伯(John Gruber). 它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的 XHTML(或者HTM ...

  9. 左值,右值,引用,指针,常量,auto如何组合?

    左值,右值,引用,指针,常量,auto如何组合? 左值引用:int &a = b; 左值引用是通过使用&符号来声明的,例如int &a. 左值引用用于绑定到左值(可标识的.持久 ...

  10. cri-docker的学习和了解-番外

    cri-docker的学习和了解-番外 前言 因为已经有足足两年多没再详细接触K8S了. 然后利用两个晚上搭建了IPV6 SingleStack的K8S单机版 中间一直使用的docker的方式学习和工 ...