乐趣区

转换流04OutputStreamWriter介绍代码实

package com.itheima.demo03.ReverseStream;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;

/*

java.io.OutputStreamWriter extends Writer
OutputStreamWriter: 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。(编码: 把能看懂的变成看不懂)

继续自父类的共性成员方法:
    - void write(int c) 写入单个字符。- void write(char[] cbuf) 写入字符数组。- abstract  void write(char[] cbuf, int off, int len) 写入字符数组的某一部分,off 数组的开始索引,len 写的字符个数。- void write(String str) 写入字符串。- void write(String str, int off, int len) 写入字符串的某一部分,off 字符串的开始索引,len 写的字符个数。- void flush() 刷新该流的缓冲。- void close() 关闭此流,但要先刷新它。构造方法:
    OutputStreamWriter(OutputStream out) 创建使用默认字符编码的 OutputStreamWriter。OutputStreamWriter(OutputStream out, String charsetName) 创建使用指定字符集的 OutputStreamWriter。参数:
        OutputStream out: 字节输出流, 可以用来写转换之后的字节到文件中
        String charsetName: 指定的编码表名称, 不区分大小写, 可以是 utf-8/UTF-8,gbk/GBK,... 不指定默认使用 UTF-8
使用步骤:
    1. 创建 OutputStreamWriter 对象, 构造方法中传递字节输出流和指定的编码表名称
    2. 使用 OutputStreamWriter 对象中的方法 write, 把字符转换为字节存储缓冲区中 (编码)
    3. 使用 OutputStreamWriter 对象中的方法 flush, 把内存缓冲区中的字节刷新到文件中 (使用字节流写字节的过程)
    4. 释放资源 

*/
public class Demo02OutputStreamWriter {

public static void main(String[] args) throws IOException {//write_utf_8();
    write_gbk();}

/*
   使用转换流 OutputStreamWriter 写 GBK 格式的文件
*/
private static void write_gbk() throws IOException {
    //1. 创建 OutputStreamWriter 对象, 构造方法中传递字节输出流和指定的编码表名称
    OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("10_IO\\gbk.txt"),"GBK");
    //2. 使用 OutputStreamWriter 对象中的方法 write, 把字符转换为字节存储缓冲区中 (编码)
    osw.write("你好");
    //3. 使用 OutputStreamWriter 对象中的方法 flush, 把内存缓冲区中的字节刷新到文件中 (使用字节流写字节的过程)
    osw.flush();
    //4. 释放资源
    osw.close();}

/*
    使用转换流 OutputStreamWriter 写 UTF- 8 格式的文件
 */
private static void write_utf_8() throws IOException {
    //1. 创建 OutputStreamWriter 对象, 构造方法中传递字节输出流和指定的编码表名称
    //OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("10_IO\\utf_8.txt"),"utf-8");
    OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("10_IO\\utf_8.txt"));// 不指定默认使用 UTF-8
    //2. 使用 OutputStreamWriter 对象中的方法 write, 把字符转换为字节存储缓冲区中 (编码)
    osw.write("你好");
    //3. 使用 OutputStreamWriter 对象中的方法 flush, 把内存缓冲区中的字节刷新到文件中 (使用字节流写字节的过程)
    osw.flush();
    //4. 释放资源
    osw.close();}

}

退出移动版