• java InputSreamReader类、OutputStreamWriter类


    1、InputSreamReader类

    类型概述

    InputStreamReader类是从字节流到字符流的桥接器,它使用指定的字符集读取字节并将它们解码为字符。每次调用一个InputStreamReader的read()方法都可能导致从底层字节输入流中读取一个或多个字节。

    为了实现字节到字符的有效转换,可以从基础流中提取比满足当前读取操作所需的更多字节。为了获得最高效率,请考虑在BufferedReader中包装InputStreamReader。

    构造方法

    InputStreamReader(InputStream in)
    
    • 1

    使用默认的字符集构造InputStreamReader流。

    InputStreamReader(InputStream in, Charset cs)
    
    • 1

    使用给定的字符集构造InputStreamReader流。

    InputStreamReader(InputStream in, CharsetDecoder dec)
    
    • 1

    使用给定的字符解码器构造InputStreamReader流。

    InputStreamReader(InputStream in, String charsetName)
    
    • 1

    使用给定名字的字符集构造InputStreamReader流。

    对象方法

    1、close函数

    void close()
    
    • 1

    关闭InputStreamReader流。

    2、getEncoding函数

    String getEncoding()
    
    • 1

    获取字符的编码方式。

    3、read函数

    int read()
    
    • 1

    读取单个字符。

    int read(char[] cbuf, int offset, int length)
    
    • 1

    读取指定长度的字符到字符数组中。

    使用示例

    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintStream;
    
    public class Test2 {
        public static void main(String[] args) throws IOException {
        	// 创建一个InputStreamReader
            InputStreamReader inputStreamReader =  new InputStreamReader(System.in);
            // 读取一个字符
            char c = (char)inputStreamReader.read();
            // 创建一个打印流
            PrintStream printStream = new PrintStream(System.out);
            // 输出到控制台
            printStream.println(c);
            inputStreamReader.close();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    2、OutputStreamWriter类

    类型概述

    OutputStreamWriter是从字符流到字节流的桥接:使用指定的字符集将写入其中的字符编码为字节。它使用的字符集可以通过名称指定,也可以明确指定,或者可以接受平台的默认字符集。

    OutputStreamWriter中存在一个字节缓冲区,用于存储每次输出的字符编码后的字节,然后待字符输出流输出完毕一次性的将存储的字节全部输出给底层的字节输出流。

    为了获得最高效率,请考虑在BufferedWriter中包装OutputStreamWriter,以避免频繁的转换器调用。

    构造方法

    OutputStreamWriter(OutputStream out)
    
    • 1

    使用默认的字符集构造OutputStreamWriter流。

    OutputStreamWriter(OutputStream out, Charset cs)
    
    • 1

    使用指定的字符集构造OutputStreamWriter流。

    OutputStreamWriter(OutputStream out, CharsetEncoder enc)
    
    • 1

    使用指定的字符集编码器构造OutputStreamWriter流。

    OutputStreamWriter(OutputStream out, String charsetName)
    
    • 1

    使用指定名称的字符集构造OutputStreamWriter流。

    对象方法

    1、close函数

    void close()
    
    • 1

    关闭OutputStreamWriter流。在关闭OutputStreamWriter流之前需要清空流中的内容。

    2、flush函数

    void flush()
    
    • 1

    清空OutputStreamWriter流。

    3、getEncoding函数

    String getEncoding()
    
    • 1

    获取字符的编码方式。

    4、write函数

    void write(char[] cbuf, int off, int len)
    
    • 1

    向流中写入字符数组的全部或者一部分内容。

    void write(int c)
    
    • 1

    向流中写入一个字符。

    void write(String str, int off, int len)
    
    • 1

    向流中写入一个字符串。

    使用示例

    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    
    public class Test {
        public static void main(String[] args) throws IOException {
            InputStreamReader inputStreamReader =  new InputStreamReader(System.in);
            char c = (char)inputStreamReader.read();
    		// 创建一个OutputStreamWriter流
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(System.out);
            // 写入一个字节
            outputStreamWriter.write(c);
    		// 关闭流
            outputStreamWriter.close();
            inputStreamReader.close();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    输入:

    abcde
    
    • 1

    输出:

    a
    
    • 1
  • 相关阅读:
    RI-TRP-DR2B 32mm 玻璃应答器|CID载码体标签在半导体行业重复利用之检测方法
    《论文阅读》SalesBot: Transitioning from Chit-Chat to Task-Oriented Dialogues
    Prettier - Code formatter格式化规则文件
    STM32 定时器介绍--通用、高级定时器
    两种数据提取框架的比较(scrapy和webmagic)
    【问题解决】Ubuntu 安装 SeisSol 依赖 easi 报错解决: undefined reference to `H5free_memory‘
    单链表操作 C实现
    Vue2 + Echarts实现3D地图下钻
    SpringBoot运维实用篇、打包、运行、高级配置、多环境开发、日志
    YOLO目标检测——卫星遥感多类别检测数据集下载分享【含对应voc、coco和yolo三种格式标签】
  • 原文地址:https://blog.csdn.net/weixin_49346755/article/details/125886125