转换流(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 ...
随机推荐
- three.js 视频融合
MixVideo.js代码: //视频融合 import * as THREE from '../build/three.module.js'; import { API } from '../js. ...
- three.js项目引入vue,因代码编写不当导致的严重影响性能的问题,卡顿掉帧严重
three.js项目引入vue,因代码编写不当导致的严重影响性能的问题,卡顿掉帧严重 问题排查 使用谷歌浏览器的Performance分析页面性能 可以看到vue.js的reactiveGetter方 ...
- 区间DP练习题题解
算法讲解:Here AcWing 282. 石子合并 (模板) 题目链接:Here const int N = 310; int a[N], s[N]; int dp[N][N]; void solv ...
- Codeforces Round #723 (Div. 2) (A~C题题解)
补题链接:Here 1526A. Mean Inequality 给定 \(2 * n\) 个整数序列 \(a\),请按下列两个条件输出序列 \(b\) 序列是 \(a\) 序列的重排序 \(b_i ...
- 三、springboot集成金仓数据库
系列导航 一.金仓数据库搭建(单机) 二.金仓数据库搭建(主从安装) 三.springboot集成金仓数据库 1.数据库中创建表 CREATE TABLE TEST_BLOCK_T ( BLOCK_I ...
- vue-asome-swiper
- C#使用迭代器显示公交车站点
public static IList<object> items = new List<object>();//定义一个泛型对象,用于存储对象 /// <summary ...
- Vue第四篇 Vue路由系统
01-路由注册 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- mybatis 源码学习
本文为博主原创,未经允许不得转载:
- 到底什么样的 Java 项目用 Solon 好???
什么样的 Java 项目用 Solon 好 就像华为讲的,不要因为爱国而特意买华为手机.Solon 也是,有需要就用不需要就跳过(按正常的需求选择): 信创需要国产化,应该用 Solon 或者 Sol ...