对于我们常用的 GBK 中,英文是占用 1 个字节,中文是 2 个
对于 UTF-8,英文是 1 个,中文是 3 个
对于 Unicode,英文中文都是 2 个
Java 的流操作分为字节流和字符流两种。
1、字节流
所有的读操作都继承自一个公共超类 java.io.InputStream 类。
所有的写操作都继承自一个公共超类 java.io.OutputStream 类。
InputStream 和 OutputStream 都是抽象类。
InputStream 有 6 个低级输入流:
低级流
流的用途
ByteArrayInputStream
从内存数组中读取数据字节
FileInputStream
从本地文件系统中读取数据字节
PipedInputStream
从线程管道中读取数据字节
StringBufferInputStream
从字符串中读取数据字节
SequenceInputStream
从两个或多个低级流中读取数据字节,当到达流的末尾时从一个流转到另一个流
System.in
从用户控制台读取数据字节
InputStream 还有一个子类:过滤器流 java.io.FilterInputStream。过滤器流即能把基本流包裹起来,提供更多方便的用法。
FilterInputStream 类的构造方法为 FilterInputStream(InputStream),在指定的输入流之上,创建一个输入流过滤器。
FilterInputStream 的常用的子类如下:
过滤器输入流
流的用途
BufferedInputStream
缓冲区对数据的访问,以提高效率
DataInputStream
从输入流中读取基本数据类型,如 int、float、double 或者甚至一行文本
LineNumberInputStream
在翻译行结束符的基础上,维护一个计数器,该计数器表明正在读取的是哪一行。
PushbackInputStream
允许把数据字节向后推到流的首部
OutputStream(略)
OutputStream 的结构基本和 InputStream 是一样的。