Класс Java FileChannel без использования класса потока Java - PullRequest
0 голосов
/ 15 марта 2012

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

Однако как я могу получить объект FileChannel определенного файла без использования классов Java Stream?

это с помощью RandomAccessFile?Используя класс RandomAccessFile, я выполняю требование «не использовать никакие классы потока Java»?

Ответы [ 2 ]

3 голосов
/ 15 марта 2012

Нет способа получить доступ к FileChannel без использования InputStream, OutputStream или RandomAccessFile.

И RandomAccessFile реализует DataInput и DataOutput, которыепредоставляет интерфейс для чтения байтов из двоичного потока.Поэтому я считаю, что даже RandomAccessFile является своего рода потоковым классом.

Редактировать:

Я действительно не знаю, в каком контексте вы называете класс какСтрим класс.RandomAccessFile все еще может использоваться в вашем случае, так как чтение и запись в поток очень абстрактны для пользователя.Он показывает, как читать или записывать файлы не последовательно.

В общем случае мы классифицируем поток ввода-вывода по следующим категориям:

  • Потоки байтов обрабатывают I /O необработанных двоичных данных.

  • Символьные потоки обрабатывают ввод / вывод символьных данных, автоматически обрабатывая перевод в и из локального набора символов.

  • Буферизованные потоки оптимизируют ввод и вывод, уменьшая количество обращений к собственному API.

  • Сканирование и форматирование позволяет программе читать и записывать форматированный текст.

  • Ввод / вывод из командной строки описывает стандартные потоки и объект консоли.

  • Потоки данных обрабатывают двоичный ввод / вывод примитивного типа данных и строковых значений.

  • Потоки объектов обрабатывают двоичный ввод / вывод объектов.

Однако RandomAccessFile не относится ни к одной из вышеуказанных категорий.механизм ввода-вывода, представленный в выпуске JDK 7 (NIO).Он будет проходить под Channel I / O, а не Stream I / O.Итак, используйте RandomAccessFile.

0 голосов
/ 15 марта 2012

Я бы использовал JNI, если потоки не разрешены!

...