在把 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。