Java 流:输入输出的核心机制
在网络编程中,大量的工作都围绕着简单的输入输出展开,即把字节从一个系统传输到另一个系统。在 Java 里,输入输出(I/O)的组织方式与大多数其他语言(如 Fortran、C 和 C++)有所不同。下面我们就来详细探讨 Java 独特的 I/O 处理方式。
流的基础概念
Java 的 I/O 是基于流构建的。输入流用于读取数据,输出流用于写入数据。不同的流类,如 java.io.FileInputStream
和 sun.net.TelnetOutputStream
,用于读写特定来源的数据。不过,所有输出流都有相同的基本方法来写入数据,所有输入流也使用相同的基本方法来读取数据。创建流之后,很多时候我们可以忽略具体读写的细节。
流可以分为以下几种类型:
1. 过滤器流 :可以与输入流或输出流链接。过滤器可以在读写数据时修改数据,比如进行加密或压缩,也可以提供额外的方法将读写的数据转换为其他格式。例如, java.io.DataOutputStream
类提供了一个方法,将 int
转换为四个字节并写入其底层输出流。
2. 读取器和写入器 :可以与输入流和输出流链接,使程序能够读写文本(即字符)而非字节。正确使用时,读取器和写入器可以处理多种字符编码,包括多字节字符集,如 SJIS 和 UTF - 8。
3. 同步流 :流是同步的,也就是说,当程序(实际上是线程)要求流读写一段数据时,它会