В чем разница между канальным вводом / выводом и потоковым вводом / выводом в Java?

21

В чем разница между потоковым вводом и канальным вводом? Java-API предоставляет как потоковый в пакете "java.io", так и основанный на каналах в пакете "java.nio". Какой из них лучше по производительности и уменьшен при выполнении ошибок?

Пранит Баува
источник
Вы проверяли вики-тег 'nio' в Stack Overflow? «NIO означает« новый ввод / вывод ». Он был представлен в JDK 1.4 в пакете java.nio. Он состоит из нескольких элементов: ...»
gnat
1
это хороший вопрос, 10 лет назад ... краткий ответ - это зависит от того , есть ли обширная документация о том, когда использовать какую технологию, они все еще существуют, потому что они лучше справляются с разными задачами. Длинный ответ У Google есть все, что вам нужно знать.
Я думаю, что это хороший вопрос. ОП - одна из 10 000 счастливчиков сегодняшнего дня .
Гэри Роу
Согласно stackoverflow.com/questions/2810156/concepts-channel-vs-stream - канал ориентирован на сообщения, а поток ориентирован на байты и, вероятно, не знает, как разделить сообщения. Еще одно отличие - каналы хранят сообщения, а потоки - нет.
inf3rno

Ответы:

13

Смотрите этот пост в блоге Oracle для хорошего обзора

Также не забывайте читать API-интерфейсы Java 7 NIO.2!

С точки зрения производительности и т. Д., Хорошо, ответ: «это зависит». Это зависит от характеристик вашего ввода / вывода, например, его размера, его «формы», будь то сеть или диск, память или…

Мартейн Вербург
источник
8
Вот ссылка на архив: web.archive.org/web/20140528182031/https://blogs.oracle.com/slc/… - Вот почему ответы здесь должны быть в состоянии работать без их ссылок, кстати,
piegames,