zoukankan      html  css  js  c++  java
  • Java IO: InputStreamReader和OutputStreamWriter

    作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

    本章节将简要介绍InputStreamReader和OutputStreamWriter。细心的读者可能会发现,在之前的文章中,IO中的类要么以Stream结尾,要么以Reader或者Writer结尾,那这两个同时以字节流和字符流的类名后缀结尾的类是什么用途呢?简单来说,这两个类把字节流转换成字符流,中间做了数据的转换,类似适配器模式的思想。

    InputStreamReader

    原文链接

    InputStreamReader会包含一个InputStream,从而可以将该输入字节流转换成字符流,代码例子:

    01 InputStream inputStream = new FileInputStream("c:\data\input.txt");
    02  
    03 Reader reader = new InputStreamReader(inputStream);
    04  
    05 int data = reader.read();
    06  
    07 while(data != -1){
    08  
    09     char theChar = (char) data;
    10  
    11     data = reader.read();
    12  
    13 }
    14  
    15 reader.close();

    注意:为了清晰,代码忽略了一些必要的异常处理。想了解更多异常处理的信息,请参考Java IO异常处理。

    read()方法返回一个包含了读取到的字符内容的int类型变量(译者注:0~65535)。代码如下:

    1 int data = reader.read();

    你可以把返回的int值转换成char变量,就像这样:

    1 char aChar = (char) data; //译者注:这里不会造成数据丢失,因为返回的int类型变量data只有低16位有数据,高16位没有数据

    如果方法返回-1,表明Reader中已经没有剩余可读取字符,此时可以关闭Reader。-1是一个int类型,不是byte或者char类型,这是不一样的。

    InputStreamReader同样拥有其他可选的构造函数,能够让你指定将底层字节流解释成何种编码的字符流。例子如下:

    1 InputStream inputStream = new FileInputStream("c:\data\input.txt");
    2  
    3 Reader reader = new InputStreamReader(inputStream, "UTF-8");

    注意构造函数的第二个参数,此时该InputStreamReader会将输入的字节流转换成UTF8字符流。

    OutputStreamWriter

    原文链接

    OutputStreamWriter会包含一个OutputStream,从而可以将该输出字节流转换成字符流,代码如下:

    1 OutputStream outputStream = new FileOutputStream("c:\data\output.txt");
    2  
    3 Writer writer = new OutputStreamWriter(outputStream);
    4  
    5 writer.write("Hello World");
    6  
    7 writer.close();

    OutputStreamWriter同样拥有将输出字节流转换成指定编码的字符流的构造函数。

    原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Java IO: InputStreamReader和OutputStreamWriter

  • 相关阅读:
    ZOJ 2588 Burning Bridges
    POJ 1966 ZOJ 2182 Cable TV Network
    HDU 5348 MZL's endless loop
    HDU 5352 MZL's City
    Tarjan算法求解无向连通图的割点、割边、点双连通分量和边双连通分量的模板
    ZOJ 1119 SPF
    HDU 3452 Bonsai
    HDU 1520 Anniversary party
    POJ 2239 Selecting Courses
    POJ 1144 Network
  • 原文地址:https://www.cnblogs.com/dassmeta/p/5323941.html
Copyright © 2011-2022 走看看