OutputStreamWriter介绍&代码实现和InputStreamReader介绍&代码实现

OutputStreamWriter介绍&代码实现

java.io.OutputStreamWriter extends Writer

OutputStreamWriter:是字符的桥梁流以字节流:向其写入的字符编码成使用指定的字节charset(编码:把能看懂的变成看不懂的)

继承自父类的共性成员方法:

Writer append(char c)
将指定的字符附加到此作者。
Writer append(CharSequence csq)
将指定的字符序列附加到此作者。
Writer append(CharSequence csq, int start, int end)
将指定字符序列的子序列附加到此作者。
abstract void close()
关闭流,先刷新。
abstract void flush()
刷新流。
void write(char[] cbuf)
写入一个字符数组。
abstract void write(char[] cbuf, int off, int len)
写入字符数组的一部分。
void write(int c)
写一个字符
void write(String str)
写一个字符串
void write(String str, int off, int len)
写一个字符串的一部分。 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

构造方法:

OutputStreamWriter(OutputStream out)
创建一个使用默认字符编码的OutputStreamWriter。
 
 
OutputStreamWriter(OutputStream out, String charsetName)
创建一个使用命名字符集的OutputStreamWriter。 

 

 

 

 

 

 

使用步骤:

  1.创建OutputStreamWriter对象,构造方法中传递字节输出流和指定的编码表名称

  2.创建OutputStreamWriter对象中的方法write,把字符转为字节存储缓冲区中(编码)

  3.使用OutputStreamWriter对象中的方法flush,把内存缓冲区中的字节刷新到文件中(使用字节流写字节的过程)

  4.释放资源

UTF-8代码演示:

复制代码
    public static void main(String[] args) throws IOException {
        write_utf_8();
    }/*
        使用转换流OutputStreamWriter写UTF-8格式文件
     */
    private static void write_utf_8() throws IOException {
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream("utf-8.txt"), "utf-8");//转换流编码
        outputStreamWriter.write("你好");//写入资源
        outputStreamWriter.flush();//刷新
        outputStreamWriter.close();//关闭资源
    }
复制代码

 

GBK代码演示:

复制代码
    public static void main(String[] args) throws IOException {
        write_gbk();
    }
    /*
        使用转换流OutputStreamWriter写GBK格式文件
     */
    private static void write_gbk() throws IOException {
        OutputStreamWriter gbk = new OutputStreamWriter(new FileOutputStream("gbk.txt"), "GBK");
        gbk.write("你好吧");
        gbk.flush();
        gbk.close();
    }
复制代码

 

转换输出流,可以指定编码表写你要想写的编码表名称

 

 

InputStreamReader介绍&代码实现

java.io.InputStreamReader extends Reader

InputStreamReader :是从字节流到字符流的桥:它读取字节,并使用指定的charset将其解码为字符(解码:把看不懂的变成能看懂的)

继承父类的成员方法:

abstract void close()
关闭流并释放与之相关联的任何系统资源。
void mark(int readAheadLimit)
标记流中的当前位置。
boolean markSupported()
告诉这个流是否支持mark()操作。
int read()
读一个字符
int read(char[] cbuf)
将字符读入数组。
abstract int read(char[] cbuf, int off, int len)
将字符读入数组的一部分。
int read(CharBuffer target)
尝试将字符读入指定的字符缓冲区。
boolean ready()
告诉这个流是否准备好被读取。
void reset()
重置流。
long skip(long n)
跳过字符 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

构造方法:

InputStreamReader(InputStream in)
创建一个使用默认字符集的InputStreamReader。
 
 
InputStreamReader(InputStream in, String charsetName)
创建一个使用命名字符集的InputStreamReader。 

 

 

 

 

 

 

使用步骤:

  1.创建InputStreamReader对象,构造方法中传递字节输入流和指定的编码表名称

  2.使用InputStreamReader对象中的方法read读取文件

  3.释放资源

注意事项:

  构造方法中指定的编码表名称要和文件的编码相同,否则会发送乱码

UTF-8代码演示:

复制代码
    public static void main(String[] args) throws IOException {
        read_utf_8();
    }/*
        使用InputStreamReader读取UTF-8格式的文件
     */
    private static void read_utf_8() throws IOException {
        InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream("utf-8.txt"), "UTF-8");
        int len;
        while ((len=inputStreamReader.read())!=-1){
            System.out.println((char) len);
        }
        inputStreamReader.close();
    }
复制代码

 

GBK代码演示:

复制代码
    public static void main(String[] args) throws IOException {
        read_gbk();
    }
    private static void read_gbk() throws IOException {
        InputStreamReader gbk = new InputStreamReader(new FileInputStream("gbk.txt"), "GBK");
        int len;
        while ((len=gbk.read())!=-1){
            System.out.println((char) len);
        }
        gbk.close();
    }
复制代码

 

posted @   monkey大佬  阅读(406)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示