Java randomaccessfile указывает местоположение для реализации чтения и написания файлов
Randomaccessfile принадлежит к классу случайного чтения. Он может управлять содержимым самого файла случайным образом и может читать и записывать содержимое в указанном месте файла, что во многих случаях очень удобно.
Randomaccessfile используется для доступа к файлам, в которых хранятся записи данных. Вы можете использовать метод seek () для доступа к записям и чтению и записи. Размер этих записей не должен быть таким же; Однако их размер и местоположение должны быть известны. Однако этот класс ограничен рабочими файлами.
Randomaccessfile не принадлежит к классам InputStream и Output -поставку. Фактически, в дополнение к реализации интерфейсов DataInput и DataOutput (DataInputStream и DataOutputStream также реализуют эти два интерфейса), он не имеет ничего общего с этими двумя классами и даже не использует каких -либо функций, которые уже существуют в классах InputStream и OutputStream; Это совершенно независимый класс, и все методы (в основном принадлежат себе) написаны с нуля. Это может быть связано с тем, что randomaccessfile может перемещаться взад и вперед в файле, поэтому его поведение несколько принципиально отличается от других классов ввода -вывода. Короче говоря, это отдельный класс, который непосредственно наследует объект.
По сути, рабочий способ randomaccessfile заключается в объединении DataInputStream и DataOutputStream и добавление некоторых своих собственных методов, таких как getFilePointer () для позиционирования, seek () для перемещения в файле и определить длину () для размера файла и Skipbytes () для Skip. Кроме того, его конструктор также имеет параметр, который указывает, следует ли открывать файл в режиме только для чтения ("R") или режима READ-WRITE ("RW") (точно так же, как FOPEN () C). Он не поддерживает только написание файлов.
Только randomaccessfile имеет метод поиска, и этот метод применим только к файлам. BufferedInputStream имеет метод Mark (), который вы можете использовать для установки Mark (сохранить результат во внутренней переменной), а затем Call Reset (), чтобы вернуться к этой позиции, но его функция слишком слаба и не очень практичная.
Пример кода:
Импорт java.io.ioexception; import java.io.randomaccessfile;/** * randomaccessfile принадлежит к классу случайного чтения и может управлять содержанием самого файла напрямую и случайным писать(); читать(); } public static void write () бросает ioException {// получить доступ к файлу в чтении-Write Manance randomaccessfile raf = new randomaccessfile ("d: //test.txt", "rw"); raf.writebytes («Привет, мир!»); raf.writeboolean (true); raf.writeint (30); raf.writedouble (3.56); raf.close (); } public static void read () бросает ioException {randomAccessfile raf = new randomaccessfile ("d: //test.txt", "r"); raf.seek (12); // установить позицию указателя Boolean BooleanValue = raf.readboolean (); int intvalue = raf.readint (); Double DoubleValue = raf.readDouble (); raf.seek (0); // Установить положение указателя в начало файла byte [] bytes = new Byte [12]; for (int i = 0; i <bytes.length; i ++) bytes [i] = raf.readbyte (); // читать байт за раз и назначать его байтам [i] StringValue = new String (Bytes); raf.skipbytes (1); // пропустить байт -байт int intvalue2 = raf.readint (); raf.close (); System.out.println (BooleanValue); System.out.println (Intvalue); System.out.println (DoubleValue); System.out.println (StringValue); System.out.println (Intvalue2); }}Спасибо за чтение, я надеюсь, что это поможет вам. Спасибо за поддержку этого сайта!