Авторы и читатели java.io - откуда вы знаете, что следует использовать? - PullRequest
3 голосов
/ 16 мая 2011

Существует довольно много классов, расширяющих java.io.Writer и java.io.Reader.

Есть ли обстоятельства, когда вы должны использовать один поверх другого? Какова общая полезность каждого из них (почему их так много)?

Есть ли у них различия в характеристиках производительности? Все они просто пишут / читают из потока - не так ли?

Кто-нибудь знает статью, в которой я приведу примеры того, где вы будете использовать один над другим?

Тот же вопрос относится и к фактическим файлам. Кажется, есть несколько способов открыть поток файлов для чтения / записи.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 16 мая 2011

Имя Читателя многое говорит о сценарии использования.

FileReader / StringReader / CharArrayReader / InputStreamReader имеют различную реализацию для чтения из файлов, строк, CharArrays или InputStream. Использование зависит от вашего источника.

LineNumberReader / PushbackReader / BufferedReader не работают в «автономном режиме», их можно объединить с другим Source-Reader. например new BufferedReader( new FileReader(file) );

Этот Reader дает вам методы для особых случаев, которые вы можете захотеть сделать. BufferedReader для чтения построчно или LineNumberReader для получения номера строки.

PipedReader хорошо подходит для чтения формы данных в Части / Нити вашей Программы в другой Части / Нити в сочетании с PipedWriter. ...

... для особых случаев вы можете создавать цепочки с помощью Reader и Writer, как шаблон Decorator.

1 голос
/ 16 мая 2011

Это особый шаблон дизайна, который они выбрали. Какой класс вам нужен основан на том, что "что вам нужно сделать". Если вы хотите прочитать из файла, то вам, возможно, понадобится FileReader. С большинством из этих классов вы можете заключить один в другой, чтобы получить необходимую вам функциональность.

Вот хороший вопрос Я недавно задавал вопрос об использовании Writer класса.

...