2013-12-11 16 views
0

我想編寫一個InputStream,它從另一個InputStream獲取其輸入並對其執行某些操作。我發現FilterInputStream提供了我正在尋找的東西。Java - 編寫FilterInputStream

那麼編寫我自己的FilterInputStream時,最佳做法是什麼?標準實現只是將所有讀取請求傳遞給原始InputStream。所以,我有這樣的事情:

public class MyFilterInputStream extends FilterInputStream { 

    public MyFilterInputStream(InputStream inputStream) { 
    super(inputStream); 
    } 

    public int read() { 
    int i = in.read(); 
    int j = doSomething(i); 
    return j; 
    } 
    ... 
} 

它會更好使用多線程技術,其中,例如,一個線程不斷地從讀取並在隨後被MyFilterInputStream訪問的緩衝存儲的數據。讀()? (特別是當所產生從所消耗的量的不同的數據的量)

更新:

的具體應用將是一個原始音頻流作爲輸入和一個(以某種方式)壓縮音頻流作爲輸出。

+1

你到底想做什麼? –

+0

更新了問題 – moe1

回答

0

我不認爲你的解決方案需要另一個線程。你所描述的想法會導致像BufferedFilterInputStream這樣的事情,這是完全合法的,但是與你所期望的不同。

過濾器是像一個代理服務器,它會兩件事情之間提供一個transparet方式一些額外functionallity,所以第一件事就是決定什麼是你要提供:)

乾杯的事情。