Главная » Java » Класс RandomAccessFile

0

 предоставляет более совершенный механизм для работы с файлами, чем файловые потоки. Он не является расширением Input Stream или OutputStream, поскольку может осуществлять любую из операций чтения/записи или оба действия сразу. Режим работы с файлом указывается в качестве параметра для различных конструкторов. Класс Random AccessFile реализует оба интерфейса Data InputStream и DataOutput Stream, поэтому он может применяться для чтения/записи встроенных типов Java.

Хотя класс RandomAccessFile  не является расширением входных и выходных потоковых классов, имена и сигнатуры содержащихся в нем методов совпадают с вызовами read и write. Хотя это означает, что вам не придется учить новый набор имен и семантик для выполнения той же самой задачи, объекты класса RandomAccessFile  не могут использоваться  там, где требуется присутствие объектов InputStream или OutputStream. Тем не менее вы можете использовать объекты RandomAccessFile  вместо объектов-потоков DataInput или DataOutput.

 содержит три конструктора:

public RandomAccessFile(String name, String mode)       throws  IOException

Создает объект RandomAccessFile  для заданных имени файла и режима. Режим указывается в виде “r” или “rw” для доступа по чтению или чтению/записи соответственно. Любое другое значение режима приводит к возбуждению I OException.

public RandomAccessFile(File file, String mode)       throws  IOException Создает объект RandomAccessFile  для заданного объекта класса File и режима. public RandomAccessFile(FileDescriptor fd) throws IOException

Создает объект RandomAccessFile  для заданного объекта fd типа File Descriptor (см. раздел

“Файловые потоки и FileDescriptor”).

Термин “произвольный доступ” (random access), вынесенный в название типа, обозначает возможность установки файлового указателя чтения/записи в любую позицию внутри файла с последующим выполнением нужной операции. Эта возможность обеспечивается следующими методами:

public long getFilePointer()  throws IOException

Возвращает текущее смещение (в байтах) от начала файла. public void seek(long pos) throws IOException

Устанавливает файловый указатель в заданную позицию (в байтах). Следующий

считанный или записанный байт будет иметь смещение pos. public long length() throws IOException

Возвращает длину файла.

Упражнение 11.8

Напишите программу для чтения файла, который состоит из отдельных элементов, разделяемых строками, начинающимися с символов %%. Программа должна создавать сводный файл, содержащий начальную позицию для каждого такого элемента. Затем напишите программу, которая печатает случайный элемент на основании сводного файла (см. описание метода Math.random в разделе “Класс Math”).

Источник: Арнольд К., Гослинг Д. – Язык программирования Java (1997)

По теме:

  • Комментарии