InputStreamReader /OutputStreamWriter字和 BufferedWriter/BufferedReader以及Reader/Writer:流

InputStreamReader:字符转换输入流

InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。

每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。 

构造方法摘要
InputStreamReader(InputStream in)
          创建一个使用默认字符集的 InputStreamReader。:构造一个字符转换输入流,默认编码
InputStreamReader(InputStream in, Charset cs)
          创建使用给定字符集的 InputStreamReader。构造一个字符转换输入流,指定编码
InputStreamReader(InputStream in, CharsetDecoder dec)
          创建使用给定字符集解码器的 InputStreamReader。

OutputStreamWriter字符转换输出流:

 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。

每次调用 write() 方法都会导致在给定字符(或字符集)上调用编码转换器。在写入底层输出流之前,得到的这些字节将在缓冲区中累积。可以指定此缓冲区的大小,不过,默认的缓冲区对多数用途来说已足够大。

构造方法摘要
OutputStreamWriter(OutputStream out)
          创建使用默认字符编码的 OutputStreamWriter。
OutputStreamWriter(OutputStream out, Charset cs)
          创建使用给定字符集的 OutputStreamWriter。
OutputStreamWriter(OutputStream out, CharsetEncoder enc)
          创建使用给定字符集编码器的 OutputStreamWriter。
OutputStreamWriter(OutputStream out, String charsetName)
          创建使用指定字符集的 OutputStreamWriter。

BufferedWriter:字符缓冲输出流

将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

可以指定缓冲区的大小,或者接受默认的大小

构造方法摘要
BufferedWriter(Writer out)
          创建一个使用默认大小输出缓冲区的缓冲字符输出流。
BufferedWriter(Writer out, int sz)
          创建一个使用给定大小输出缓冲区的新缓冲字符输出流。

字符缓冲输出流: 特有功能:public void newLine():写入一个行的分隔符号

 字符缓冲输入流: 特有功能:public String readLine():一次读取一行 

字符转换输入流=字节流+编码格式

BufferedReader:字符缓冲输入流

构造方法摘要
BufferedReader(Reader in)
          创建一个使用默认大小输入缓冲区的缓冲字符输入流。
BufferedReader(Reader in, int sz)
          创建一个使用指定大小输入缓冲区的缓冲字符输入流。


 字符流:

   字符输入流:Reader
   字符输出流:Writer
 字符输出流/字符输入流:都是抽象类
   使用一个子类:转换流
  
 

  转换流的构成=字节流+编码格式(平台默认/指定)
 转换流的对象的创建,格式比较长,非常麻烦,Java--->转换流的便捷类

 Reader:抽象类:字符输入流

   inputStreamReader(字符转换输入流 :inputStream+编码格式)

                        便捷类:FileReader,这个类可以直接对文件进行操作 

  Writer:抽象类:字符输出流
   outputStreamWriter(字符转换输出流:outputStream+编码格式)

   便捷类:FileWriter,这个类可以直接对文件进行操作

字符输入流读数据的方法:
  int read(char[] chs):读取一个字符数组

  int read():读取单个字符 

字符输出流写数据的功能:
  public void write(int c):写单个字符 
  public void write(char[] cbuf):写字符数组
  public abstract void write(char[] cbuf, int off,  int len):写字符数组的一部分
  public void write(String str):写字符串
  public void write(String str,int off, int len):写字符串的某一部分
 
flush和close方法的区别?
  close:关闭该流,关闭该流对象以及它关联 的资源文件,关闭之后,不能再对流对象进行操作了,否则会有异常
  flush:刷新该流,为了防止一些文件(图片文件/音频文件),缺失,或者没有加载到流对象中,刷新了该流,还是可以流对象进行操作
  字符缓冲输入流/字符缓冲输出流

猜你喜欢

转载自blog.csdn.net/qq_41141896/article/details/80412045
今日推荐