IO流操作的问题 请大神帮忙

在把 new FileInputStream(f)转换成字符流时,用InputStreamReader 还是 fileReader好,为什么?

FileReader继承自InputStreamReader,如果你的读写操作很少频率很低,是没多大区别的。

/**

  • Convenience class for reading character files. The constructors of this
  • class assume that the default character encoding and the default byte-buffer
  • size are appropriate. To specify these values yourself, construct an
  • InputStreamReader on a FileInputStream. *
  • FileReader is meant for reading streams of characters.

  • For reading streams of raw bytes, consider using a
  • FileInputStream. *
  • @see InputStreamReader
  • @see FileInputStream *
  • @author Mark Reinhold
  • @since JDK1.1 / 这是FileReader的说明; /*
  • An InputStreamReader is a bridge from byte streams to character streams: It
  • reads bytes and decodes them into characters using a specified {@link
  • java.nio.charset.Charset charset}. The charset that it uses
  • may be specified by name or may be given explicitly, or the platform's
  • default charset may be accepted. *
  • Each invocation of one of an InputStreamReader's read() methods may

  • cause one or more bytes to be read from the underlying byte-input stream.
  • To enable the efficient conversion of bytes to characters, more bytes may
  • be read ahead from the underlying stream than are necessary to satisfy the
  • current read operation. *
  • For top efficiency, consider wrapping an InputStreamReader within a

  • BufferedReader. For example: *
  • BufferedReader in
  • = new BufferedReader(new InputStreamReader(System.in));
  • *
  • @see BufferedReader
  • @see InputStream
  • @see java.nio.charset.Charset *
  • @author Mark Reinhold
  • @since JDK1.1
    */
    这是InputStreamReader的说明。

    大致意思就是说:FileReader是读文件用的,你每次读取时,都是字节字节读的,这样用InputStreanReader会比较慢,建议使用FileReader,如果想用InputStreamReader,最好在外层加一个缓冲区,比如BufferedReader。