0

Есть слишком много классов java.io, для некоторых из них я действительно не понимаю, когда мы нуждаемся в них, например:ByteArrayInputStream, SequenceInputStream, StringReader где использовать

ByteArrayInputStream, ByteArrayOutputStream

SequenceInputStream,

PushbackInputStream, PushbackReader

StringReader ...

I значит, некоторые из реальной жизни использования

Может кто-то пожалуйста, объясните ...

+0

https://github.com/search?l=java&q=ByteArrayInputStream&source=cc&type=Code –

+1

Могу я узнать, что случилось с моим вопросом? –

ответ

3

Я бы сказал, что ваш вопрос слишком широк.

Однако можно дать очень простой обзор java.io package. Он содержит интерфейсы и классы для операций ввода и вывода данных, таких как чтение байтов из файла. Есть только несколько основных интерфейсов/классов:

  • DataInput/ObjectInput - readig Java примитивы и объекты
  • DataOutput/ObjectOutput - написание Java примитивы и объекты
  • InputStream - чтение отдельные байт
  • OutputStream - написание индивидуальных сообщений байт
  • Reader - чтение символьные данные
  • Writer - написание символьных данных

Есть другие полезные интерфейсы (как Closeable), но они менее значительны.


Лучше всего, если вы читаете JavaDoc этих классов. Некоторые примеры:

  1. Совершенно очевидно, что вы использовали бы FileOutputStream, чтобы что-то записать в файл.
  2. Символьные данные представлены байтами (определенными символьной кодировкой), поэтому вы можете обернуть любой выходной поток, используя OutputStreamWriter.
  3. У вас есть byte[] и хотите прочитать от него так же, как от InputStream? Используйте ByteArrayInputStream.
  4. Вы хотите, чтобы вернуть читаемые байты обратно читателю (как правило, поддерживается только один проход)? Оберните читателя PushbackReader.
  5. У вас есть String и вы хотите прочитать от него так же, как от Reader? Используйте StringReader.
  6. ...

Так что, если вам нужен определенный поток/читатель/писатель, проверьте java.io пакет, выполните поиск в Интернете и задайте вопрос о СО, если необходимо.


Конечно, то есть java.nio package, которые вы должны знать. Но это для другой темы.

+0

то, что я действительно хотел, было ... не использовать их в целом ... некоторые примеры их специальных применений ...... как я только что обнаружил, что входной поток байтового массива может использоваться для некоторого чтения блока данных (может быть изображение) из URL-адреса или может быть из базы данных ... –

+0

для SequenceInputStream Я не могу найти полезное использование –

+1

** Просто прочитайте JavaDoc ** ... он может объединить несколько потоков. Предположим, вы хотите передать один входной поток некоторому компоненту, который должен читать два файла ... 'new SequenceInputStream (новый FileInputStream (« fileA »), новый FileInputStream (« fileB »)). –