转换流(InputStreamReader OutputStreamWriter)
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)的更多相关文章
- 转换流InputStreamReader & OutputStreamWriter
转换流InputStreamReader & OutputStreamWriter 比如当使用FileReader读取文件时,可以读取IDE默认的UTF-8编码的文件,但是当有一个文件是GBK ...
- [19/04/02-星期二] IO技术_字符流分类总结(含字符转换流InputStreamReader/ OutputStreamWriter,实现字节转字符)
一.概念 ------->1.BufferedReader/BufferedWriter [参考19.03.31文章] *Reader/Writer-------->2.InputStre ...
- Java IO 流 -- 转换流: InputStreamReader OutputStreamWriter
java 中 转换流是以字符流的形式操作字节流,需要注意一下两点: 1.操作内容必须是纯文本 2.指定字符集避免乱码 操作控制台输入输出: try (BufferedReader br = new B ...
- (25)IO流之转换流InputStreamReader和OutputStreamWriter
InputStreamReader:字节到字符的桥梁. OutputStreamWriter:字符到字节的桥梁. 它们有转换作用,而本身又是字符流.所以在构造的时候,需要传入字节流对象进来. 构造函数 ...
- Java API —— 编码 & IO流( InputStreamReader & OutputStreamWriter & FileReader & FileWriter & BufferedReader & BufferedWriter )
1.编码 1)编码表概述 由字符及其对应的数值组成的一张表 2)常见编码表 · ASCII/Unicode 字符集:ASCII是美国标准信息交换码,用一 ...
- JAVA之旅(二十七)——字节流的缓冲区,拷贝mp3,自定义字节流缓冲区,读取键盘录入,转换流InputStreamReader,写入转换流,流操作的规律
JAVA之旅(二十七)--字节流的缓冲区,拷贝mp3,自定义字节流缓冲区,读取键盘录入,转换流InputStreamReader,写入转换流,流操作的规律 我们继续来聊聊I/O 一.字节流的缓冲区 这 ...
- 转换流--InputStreamReader ,OutputStreamWriter
BufferedReader 字符流,只能装饰字符流,不能装饰字节流.有个重要且好用的方法是readLine()整行读取字符. 但是InputStream是字节流,没有resdLine方法,那么字节流 ...
- Java基础---Java---IO流-----读取键盘录入、InputStreamReader、转换流、OutputStreamWriter、InputStreamReader
字符流: FileReader FileWriter BufferedReader BufferedWriter 字节流: FileInputStream FileOutputStream Buffe ...
- Java IO流学习总结五:转换流-InputStreamReader、OutputStreamWriter
类的继承关系 Reader |__ BufferedReader.StringReader.InputStreamReader |__ FileReader Writer |__ BufferedWr ...
- io流之转换流InputStreamReader、OutputStreamWriter
例子程序: package io; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.File ...
随机推荐
- STM32CubeMX教程17 DAC - 输出三角波噪声波
1.准备材料 正点原子stm32f407探索者开发板V2.4 STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) ST-LINK/V2驱动 ...
- C#9.0:Top-Level Programs
我们称之为顶级层序 用 C# 编写一个简单的程序需要大量的样板代码,引用,类.方法.结构体等: 1 class Program 2 { 3 static void Main(string[] args ...
- Eight HDU - 1043 (反向搜索 + 康拓展开 / A* + BFS / IDA* )
题目描述 简单介绍一下八数码问题: 在一个3×3的九宫格上,填有1~8八个数字,空余一个位置,例如下图: 1 2 3 4 5 6 7 8 在上图中,由于右下角位置是空的,你可以移动数字,比如可以将数字 ...
- POJ 1015 Jury Compromise (完全背包)
题目大意: 在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定.陪审团是由法官从公众中挑选的.先随机挑选n 个人作为陪审团的候选人,然后再从这n 个人中选m 人组成陪审团.选m 人的办法是:控方和辩 ...
- 牛客 | 小G的约数引起的对于 整数分块 学习
整除分块是个啥:要求\(∑_{i = 1}^n{n/i}\) 的值,这时候暴力需要O(n)的时间.由于这个区间是连续的,且'/'是向下取整,当i不能整除k时,n/i会等于最小的i(也就是区间最左边的值 ...
- shardingsphere 5.1.1 分库分表
1. mysql配置: application-dubboService = spring-csc-campaign-agent-context.xml kafka.topics.redisAcces ...
- python常见面试题讲解(九)字符个数统计
题目描述 编写一个函数,计算字符串中含有的不同字符的个数.字符在ACSII码范围内(0~127),换行表示结束符,不算在字符里.不在范围内的不作统计.注意是不同的字符 输入描述: 输入N个字符,字符在 ...
- 小白学标准库之 log
日常开发中,日志 log 几乎是必不可少.本文旨在介绍 log 的使用和内部实现等. 1. log 使用及实现 package main import ( "fmt" " ...
- 【ARM】为堆和栈保留空的内存块
此示例演示如何使用分散加载描述为堆栈和堆保留和清空内存块.它还显示链接器生成的相关符号. 在以下示例中,执行区域定义STACK 0x800000 EMPTY -0x10000定义了一个名为STACK ...
- java - 字节流读取文件
package stream; import java.io.*; public class InputStreamReaderString { public static void main(Str ...