Java IO(十六)InputStreamReader 和 InputStreamWriter
Java IO(十六)InputStreamReader 和 InputStreamWriter
一、介绍
InputStreamReader 和 OutputStreamWriter 是字节流通向字符流的桥梁:它使用指定的 charset 读写字节并将其解码为字符。如果不指定字符集编码,该解码过程将使用平台默认的字符编码,如:GBK。
- InputStreamReader:字节字符转换输入流,继承于 Reader,它的的作用是将字节输入流转换成字符输入流。
- OutputStreamWriter :字节字符转换输出流,继承于 Writer,它的的作用是将字节输出流转换成字符输出流。
二、构造方法
(一)、InputStreamReader
(二)、InputStreamWriter
三、常用API
(一)、InputStreamReader
(二)、InputStreamWriter
四、实例
public class Demo { private static char[] chs = new char[] {'a','b','c','d','e','f','g','h','i','j','k','l','m', 'n','o','p','q','r','s','t','u','v','w','x','y','z'}; public static void main(String[] args) { write(); read(); } /** * OutputStreamWriter 测试 */ public static void write() { OutputStreamWriter out = null; try { out = new OutputStreamWriter(new FileOutputStream(new File("demo.txt"))); out.write(chs);// 写入字符数组 out.write('A');// 写入字符A out.write("0123456789");// 写入字符串 out.write(chs, 10, 10);// 写入字符数组的一部分 String str = new String(chs).toUpperCase();// 将字符数组转成字符串并大写 out.write(str, 0, 10);// 写入字符串的一部分 } catch (Exception e) { e.printStackTrace(); }finally { try { if(out != null) out.close(); }catch(Exception e) { e.printStackTrace(); } } } /** * InputStreamReader 测试 */ public static void read() { InputStreamReader in = null; char[] buff = new char[20]; int len = 0; try { in = new InputStreamReader(new FileInputStream(new File("demo.txt"))); for(int i = 0;i < 5;i++) { if(in.ready()) System.out.println("read() : " + (char)in.read());// 读取一个字符 } len = in.read(buff, 0, 10);// 读取字符一部分 System.out.println("read(buff, 0, 10) : " + new String(buff,0,len)); } catch (Exception e) { e.printStackTrace(); }finally { try { if(in != null) in.close(); }catch(Exception e) { e.printStackTrace(); } } } }