Читайте также:
|
|
Некоторые классы остались неизменными при переходе от Java 1.0 к Java 1.1:
Классы Java 1.0 не имеющие соответствующих классов в Java 1.1 |
DataOutputStream |
File |
RandomAccessFile |
SequenceInputStream |
DataOutputStream, в основном, используется без изменений, так что для хранения и получения данных в транспортабельном формате, используй те иерархии InputStream и OutputStream.
Сам по себе: RandomAccessFile
RandomAccessFile используется для файлов, содержащих записи известного размера, так что вы можете переместиться от одной записи к другой, используя seek(), затем прочесть или изменить запись. Записи могут и не быть одинакового размера; вы просто способны определить их размер и их положение в файле.
Сначала немного трудно поверить, что RandomAccessFile не является частью иерархии InputStream или OutputStream. Однако он не имеет ассоциаций с этими иерархиями, за исключением того, что он реализует интерфейсы DataInput и DataOutput (которые так же реализуются DataInputStream и DataOutputStream). Он даже не использует любую функциональность существующих классов InputStream или OutputStream - это полностью отдельный класс, написанный для поиска, имеющий все свои собственные (в большинстве своем родные) методы. Объяснением этого может быть то, что RandomAccessFile имеет во многом отличающееся поведение по сравнению с остальными типами ввода/вывода, так как вы можете перемещаться вперед и назад в пределах файла. В любом случае, он стоит отдельно, как прямой потомок от Object.
По существу, RandomAccessFile работает как DataInputStream совмещенный с DataOutputStream, благодаря использованию методов getFilePointer() для нахождения местоположения в файле, seek() для перемещения в новую точку в файле и length() для определения максимального размера файла. Кроме того, конструктор требует второй аргумент (что идентично fopen() в C), указывающий будите ли вы производить только чтение в произвольном порядке ("r") или чтение и запись ("rw"). Нет поддержки для файлов только для чтения, что может сказать о том, что RandomAccessFile мог бы хорошо работать, если он наследовался бы от DataInputStream.
Метод поиска есть только у RandomAccessFile, который работает только с файлами. BufferedInputStream позволяет вам выполнять маркировку позиции с помощью метода mark() (чье значение содержится в единственной внутренней переменной) и сброс этой позиции методом reset(), но это ограничено и не очень полезно.
Дата добавления: 2015-09-11; просмотров: 27 | Поможем написать вашу работу | Нарушение авторских прав |