2013-12-11 5 views
0

Я хочу написать InputStream, который получает свой вход от другого InputStream и что-то делает с ним. Я узнал, что FilterInputStream обеспечивает именно то, что я искал.Java - Написание фильтраInputStream

Итак, что лучше всего при написании моего фильтра 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 способом, поэтому первым делом, чтобы решить, что это вещь, которую вы хотите предоставить :)

Приветствия.

Смежные вопросы