Java RandomAccessFile ระบุตำแหน่งที่จะใช้การอ่านและเขียนไฟล์
RandomaccessFile เป็นของคลาสอ่านแบบสุ่ม มันสามารถใช้งานเนื้อหาของไฟล์เองแบบสุ่มและสามารถอ่านและเขียนเนื้อหาได้ที่ตำแหน่งที่ระบุของไฟล์ซึ่งสะดวกมากในหลายกรณี
RandomaccessFile ใช้เพื่อเข้าถึงไฟล์ที่เก็บบันทึกข้อมูล คุณสามารถใช้วิธีการค้นหา () เพื่อเข้าถึงระเบียนและอ่านและเขียน ขนาดของบันทึกเหล่านี้ไม่จำเป็นต้องเหมือนกัน อย่างไรก็ตามขนาดและสถานที่ของพวกเขาจะต้องเป็นที่รู้จัก อย่างไรก็ตามคลาสนี้ จำกัด เฉพาะไฟล์ที่ใช้งานได้
RandomaccessFile ไม่ได้อยู่ในคลาส InputStream และ OutputStream ในความเป็นจริงนอกเหนือจากการใช้อินเทอร์เฟซ Datainput และ DataOutput (DatainputStream และ DataOutputStream ยังใช้อินเทอร์เฟซทั้งสองนี้) มันไม่มีอะไรเกี่ยวข้องกับคลาสทั้งสองนี้และไม่ได้ใช้ฟังก์ชั่นใด ๆ ที่มีอยู่แล้วในคลาสอินพุตและเอาท์พุทสตรีม มันเป็นคลาสที่เป็นอิสระอย่างสมบูรณ์และวิธีการทั้งหมด (ส่วนใหญ่เป็นของตัวเอง) เขียนตั้งแต่เริ่มต้น อาจเป็นเพราะ RandomAccessFile สามารถย้ายไปมาในไฟล์ได้ดังนั้นพฤติกรรมของมันจึงค่อนข้างแตกต่างจากคลาส I/O อื่น ๆ ในระยะสั้นมันเป็นคลาสแยกต่างหากที่สืบทอดวัตถุโดยตรง
โดยพื้นฐานแล้ววิธีการทำงานของ RandomAccessFile คือการรวม datainputStream และ dataOutputStream และเพิ่มวิธีการบางอย่างของตัวเองเช่น getFilePointer () สำหรับการวางตำแหน่งค้นหา () สำหรับการย้ายในไฟล์และกำหนดความยาว () สำหรับขนาดไฟล์และ skipbytes () สำหรับการข้าม นอกจากนี้ตัวสร้างยังมีพารามิเตอร์ที่ระบุว่าจะเปิดไฟล์ในโหมดอ่านอย่างเดียว ("R") หรือโหมดอ่าน-เขียน ("RW") (เหมือนกับ fopen () ของ C) ไม่สนับสนุนการเขียนไฟล์เท่านั้น
เฉพาะ RandomAccessFile เท่านั้นที่มีวิธีการค้นหาและวิธีนี้ใช้ได้กับไฟล์เท่านั้น BufferedInputStream มีวิธีการทำเครื่องหมาย () ซึ่งคุณสามารถใช้เพื่อตั้งค่าเครื่องหมาย (บันทึกผลลัพธ์ในตัวแปรภายใน) จากนั้นเรียกรีเซ็ต () เพื่อกลับไปยังตำแหน่งนี้ แต่ฟังก์ชั่นของมันอ่อนแอเกินไปและไม่สามารถใช้งานได้จริง
รหัสตัวอย่าง:
นำเข้า java.io.ioException; นำเข้า java.io.randomaccessFile;/** * randomAccessFile เป็นของคลาสอ่านแบบสุ่มและสามารถใช้งานเนื้อหาของไฟล์เองโดยตรงและแบบสุ่มนั่นคือคุณสามารถระบุตำแหน่ง * เพื่ออ่านและเขียนเนื้อหา อ่าน(); } โมฆะคงที่สาธารณะเขียน () พ่น IOException {// เข้าถึงไฟล์ในรูปแบบการอ่าน write randomAccessFile raf = new RandomActEncessFile ("D: //test.txt", "rw"); raf.writebytes ("สวัสดีโลก!"); raf.writeboolean (จริง); raf.writeint (30); raf.writedouble (3.56); raf.close (); } โมฆะคงที่สาธารณะอ่าน () พ่น IOException {RandomAccessFile RAF = new RandomActEcessFile ("D: //test.txt", "R"); raf.seek (12); // ตั้งค่าตำแหน่งบูลีนบูลีน BooleanValue = raf.readboolean (); int intvalue = raf.readint (); doublevalue = raf.readdouble (); raf.seek (0); // ตั้งค่าตำแหน่งของตัวชี้ไปที่จุดเริ่มต้นของไฟล์ไบต์ [] ไบต์ = ไบต์ใหม่ [12]; สำหรับ (int i = 0; i <bytes.length; i ++) ไบต์ [i] = raf.readbyte (); // อ่านไบต์ทีละครั้งและกำหนดให้ไบต์ [i] สตริงสตริง = สตริงใหม่ (ไบต์); 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); -ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!