Java RandomAccessFile Menentukan lokasi untuk mengimplementasikan membaca dan menulis file
RandomAccessFile termasuk dalam kelas baca acak. Ini dapat mengoperasikan konten file itu sendiri secara acak dan dapat membaca dan menulis konten di lokasi file yang ditentukan, yang sangat nyaman dalam banyak kasus.
RandomAccessFile digunakan untuk mengakses file yang menyimpan catatan data. Anda dapat menggunakan metode pencarian () untuk mengakses catatan dan membaca dan menulis. Ukuran catatan ini tidak harus sama; Namun, ukuran dan lokasi mereka harus diketahui. Namun, kelas ini terbatas pada file operasi.
RandomAccessFile bukan milik kelas InputStream dan OutputStream. Faktanya, selain mengimplementasikan antarmuka DataInput dan DataOutput (DataInputStream dan DataOutputStream juga mengimplementasikan kedua antarmuka ini), tidak ada hubungannya dengan dua kelas ini, dan bahkan tidak menggunakan fungsi apa pun yang sudah ada di kelas InputStream dan OutputStream; Ini adalah kelas yang sepenuhnya independen, dan semua metode (kebanyakan milik dirinya sendiri) ditulis dari awal. Ini mungkin karena RandomAccessFile dapat bergerak bolak -balik dalam file, sehingga perilakunya agak berbeda secara fundamental dari kelas I/O lainnya. Singkatnya, ini adalah kelas terpisah yang secara langsung mewarisi objek.
Pada dasarnya, cara kerja acak ACCEACCESSFILE adalah dengan menggabungkan DataInputStream dan DataOutputStream, dan menambahkan beberapa metode sendiri, seperti getFilePointer () untuk pemosisian, seek () untuk bergerak dalam file, dan menentukan panjang () untuk ukuran file, dan skipbytes () untuk Skip. Selain itu, konstruktornya juga memiliki parameter yang menunjukkan apakah akan membuka file dalam mode baca-saja ("r") atau mode baca-tulis ("RW") (persis sama dengan fopen () dari C). Itu tidak mendukung file penulisan saja.
Hanya RandomAccessFile yang memiliki metode pencarian pencarian, dan metode ini hanya berlaku untuk file. BufferedInputStream memiliki metode mark (), yang dapat Anda gunakan untuk mengatur tanda (simpan hasil dalam variabel internal), dan kemudian panggilan reset () untuk kembali ke posisi ini, tetapi fungsinya terlalu lemah dan tidak terlalu praktis.
Contoh kode:
import java.io.IOException;import java.io.RandomAccessFile;/** * RandomAccessFile belongs to a random read class and can operate the content of the file itself directly and randomly, that is, you can specify the location * to read and write content* @author andy * */public class RandomAccessFileTest { public static void main(String args[]) throws IOException { menulis(); membaca(); } public static void write () melempar ioException {// mengakses file dengan cara baca-write randomAccessFile raf = new randomAccessFile ("d: //test.txt", "rw"); raf.writebytes ("Halo dunia!"); raf.writeboolean (true); raf.writeint (30); raf.writedouble (3.56); raf.close (); } public static void read () melempar ioException {randomAccessFile raf = randomAccessFile baru ("d: //test.txt", "r"); raf.seek (12); // atur posisi pointer booleanvalue = raf.readboolean (); int intvalue = raf.readint (); double doublevalue = raf.readdouble (); raf.seek (0); // Atur posisi pointer ke awal byte file [] bytes = byte baru [12]; untuk (int i = 0; i <bytes.length; i ++) bytes [i] = raf.readbyte (); // Baca byte pada suatu waktu dan tetapkan untuk byte [i] string stringValue = string baru (bytes); raf.skipbytes (1); // lewati byte byte 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); }}Terima kasih telah membaca, saya harap ini dapat membantu Anda. Terima kasih atas dukungan Anda untuk situs ini!