程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 修改數據流的行為

修改數據流的行為

編輯:關於JAVA

在Java 1.0中,數據流通過FilterInputStream和FilterOutputStream的“裝飾器”(Decorator)子類適應特定的需求。Java 1.1的IO流沿用了這一思想,但沒有繼續采用所有裝飾器都從相同“filter”(過濾器)基礎類中衍生這一做法。若通過觀察類的層次結構來理解它,這可能令人出現少許的困惑。
在下面這張表格中,對應關系比上一張表要粗糙一些。之所以會出現這個差別,是由類的組織造成的:盡管BufferedOutputStream是FilterOutputStream的一個子類,但是BufferedWriter並不是FilterWriter的子類(對後者來說,盡管它是一個抽象類,但沒有自己的子類或者近似子類的東西,也沒有一個“占位符”可用,所以不必費心地尋找)。然而,兩個類的接口是非常相似的,而且不管在什麼情況下,顯然應該盡可能地使用新版本,而不應考慮舊版本(也就是說,除非在一些類中必須生成一個Stream,不可生成Reader或者Writer)。
 

Filters:
Java 1.0 class
 

Corresponding Java 1.1 class
 

FilterInputStream
 

FilterReader
 

FilterOutputStream
 

FilterWriter (abstract class with no subclasses)
 

BufferedInputStream
 

BufferedReader
(also has readLine())
 

BufferedOutputStream
 

BufferedWriter
 

DataInputStream
 

use DataInputStream
(Except when you need to use readLine(), when you should use a BufferedReader)
 

PrintStream
 

PrintWriter
 

LineNumberInputStream
 

LineNumberReader
 

StreamTokenizer
 

StreamTokenizer
(use constructor that takes a Reader instead)
 

PushBackInputStream
 

PushBackReader
 


過濾器:Java 1.0類 對應的Java 1.1類

FilterInputStream FilterReader
FilterOutputStream FilterWriter(沒有子類的抽象類)
BufferedInputStream BufferedReader(也有readLine())
BufferedOutputStream BufferedWriter
DataInputStream 使用DataInputStream(除非要使用readLine(),那時需要使用一個BufferedReader)
PrintStream PrintWriter
LineNumberInputStream LineNumberReader
StreamTokenizer StreamTokenizer(用構建器取代Reader)
PushBackInputStream PushBackReader

有一條規律是顯然的:若想使用readLine(),就不要再用一個DataInputStream來實現(否則會在編譯期得到一條出錯消息),而應使用一個BufferedReader。但除這種情況以外,DataInputStream仍是Java 1.1 IO庫的“首選”成員。
為了將向PrintWriter的過渡變得更加自然,它提供了能采用任何OutputStream對象的構建器。PrintWriter提供的格式化支持沒有PrintStream那麼多;但接口幾乎是相同的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved