网络程序所做的很大一部分工作都是简单的输入和输出:将数据字节从一个系统移动到另一个系统。但是,java中输入和输出(I/O)的组织与其他大多数语言(如:Fortram、C和C++)都不一样。这里我们来总结一下Java独特的 I/O 方法。
Java的I/O建立于流(stream)之上。输入流读取数据;输出流写入数据。不同的流类,如:java.io.FileInputStream和sun.net.TelnetOutputStream会读/写某个特定的数据源。但是,所有输出流都有相同的基本方法来写入数据,所有输入流也使用相同的基本方法来读取数据。
过滤器(filter)流可以串链到输入流或输出流上。读/写数据时,过滤器可以修改数据(例如,通过加密或压缩),或者只是提供额外的方法,将读/写的数据转换为其他格式。
阅读器(reader)和书写器(writer)可以串链到输入流和输出流上,允许程序读/写文本(即字符)而不是字节。只要正确地使用,阅读器和书写器可以处理很多字符编码,包括多字节字符集,如SJIS和UTF-8。
流是同步的。也就是说,当程序(确切地讲是线程)请求一个流读/写一段数据时,在做任何其他操作前,它要等待所读/写的数据。Java还支持使用通道和缓冲区的非阻塞I/O。非阻塞I/O稍有些复杂,但在某些高吞吐量的应用程序中(如web服务器),非阻塞I/O要快得多。
时间: 2024-10-10 10:29:30