Нет способа получить доступ к FileChannel
без использования InputStream
, OutputStream
или RandomAccessFile
.
И RandomAccessFile
реализует DataInput
и DataOutput
, которыепредоставляет интерфейс для чтения байтов из двоичного потока.Поэтому я считаю, что даже RandomAccessFile
является своего рода потоковым классом.
Редактировать:
Я действительно не знаю, в каком контексте вы называете класс какСтрим класс.RandomAccessFile
все еще может использоваться в вашем случае, так как чтение и запись в поток очень абстрактны для пользователя.Он показывает, как читать или записывать файлы не последовательно.
В общем случае мы классифицируем поток ввода-вывода по следующим категориям:
Потоки байтов обрабатывают I /O необработанных двоичных данных.
Символьные потоки обрабатывают ввод / вывод символьных данных, автоматически обрабатывая перевод в и из локального набора символов.
Буферизованные потоки оптимизируют ввод и вывод, уменьшая количество обращений к собственному API.
Сканирование и форматирование позволяет программе читать и записывать форматированный текст.
Ввод / вывод из командной строки описывает стандартные потоки и объект консоли.
Потоки данных обрабатывают двоичный ввод / вывод примитивного типа данных и строковых значений.
Потоки объектов обрабатывают двоичный ввод / вывод объектов.
Однако RandomAccessFile
не относится ни к одной из вышеуказанных категорий.механизм ввода-вывода, представленный в выпуске JDK 7 (NIO).Он будет проходить под Channel I / O, а не Stream I / O.Итак, используйте RandomAccessFile
.