Saul's blog Saul's blog
首页
后端
分布式
前端
更多
分类
标签
归档
友情链接
关于
GitHub (opens new window)

Saul.J.Wu

立身之本,不在高低。
首页
后端
分布式
前端
更多
分类
标签
归档
友情链接
关于
GitHub (opens new window)
  • Java入门基础

  • Java核心基础

    • 多线程

    • Java常用类

    • 枚举类与注解

    • Java集合

    • 数据结构与算法

    • 泛型

    • IO流

      • IO流概述
      • File对象
      • InputStream
      • OutputStream
      • Filter模式
      • 操作Zip
      • 读取classpath资源
      • 序列化
      • Reader
      • Writer
      • 转换流
        • 概述
        • InputStreamReader
          • 构造器
        • OutputStreamWriter
          • 构造器
        • Demo
      • PrintStream和PrintWriter
      • RandomAccessFile
      • Files工具类
    • 网络编程

    • 反射

    • 函数式编程

  • 设计模式

  • Web开发

  • SpringBoot

  • 微服务

  • Elasticsearch

  • 运维

  • 后端
  • Java核心基础
  • IO流
SaulJWu
2021-01-09

转换流

# 概述

转换流术语字符流。

作用:转换流提供了在字节流和字符流之间的转换。

Java API提供了两个转换流:

  • InputStreamReader:将InputStream转换为Reader
  • OutputStreamWriter:将Writer转换为OutputStream

有时候,字节流中的数据都是字符时,转成字符流操作更高效。

应用场景:很多时候我们使用转换流来处理文件乱码问题。实现编码和解码的功能。

image-20210109190720111

# InputStreamReader

实现将字节的输入流按指定字符集转换为字符的输入流。

需要和InputStream“套接”。

(将字节转换为字符,称为解码)

# 构造器

  • public InputStreamReader(InputStream in)
  • public InputSreamReader(InputStream in,String charsetName)

例如:

Reader isr= new InputStreamReader(System.in,”gbk”);//指定字符集
1

具体适用哪个字符集,取决于文件,如果不指定字符集,将会使用编译器默认的字符集。

# OutputStreamWriter

实现将字符的输出流按指定字符集转换为字节的输出流。

需要和OutputStream“套接”。

(将字符抓换为字节,称为编码)

# 构造器

  • public OutputStreamWriter(OutputStream out)
  • public OutputSreamWriter(OutputStream out,String charsetName)

# Demo

@Test
void test01() throws IOException {
    FileInputStream fis = new FileInputStream("dbcp.txt");
    FileOutputStream fos = new FileOutputStream("dbcp5.txt");
    InputStreamReader isr = new InputStreamReader(fis, "GBK");
    OutputStreamWriter osw = new OutputStreamWriter(fos, "GBK");
    BufferedReader br = new BufferedReader(isr);
    BufferedWriter bw = new BufferedWriter(osw);
    String str = null;
    while ((str = br.readLine()) != null) {
        bw.write(str);
        bw.newLine();
        bw.flush();
    }
    bw.close();
    br.close();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
帮我改善此页面 (opens new window)
#InputStreamReader#OutputStreamWriter
上次更新: 2021/01/09, 11:11:31
Writer
PrintStream和PrintWriter

← Writer PrintStream和PrintWriter→

最近更新
01
zabbix学习笔记二
02-28
02
zabbix学习笔记一
02-10
03
Linux访问不了github
12-08
更多文章>
Theme by Vdoing | Copyright © 2020-2022 Saul.J.Wu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式