ฟังก์ชันอินพุตและเอาต์พุตของภาษา Java นั้นทรงพลังและยืดหยุ่นมาก ข้อเสียเปรียบเพียงอย่างเดียวคือรหัสอินพุตและเอาต์พุตดูเหมือนจะกระชับมากเพราะคุณมักจะต้องห่อวัตถุที่แตกต่างกันมากมาย ในไลบรารีคลาส Java เนื้อหาของส่วน IO มีขนาดใหญ่มากเนื่องจากเกี่ยวข้องกับฟิลด์ที่หลากหลาย: อินพุตและเอาต์พุตมาตรฐานการทำงานของไฟล์สตรีมข้อมูลบนเครือข่ายสตรีมสตริงสตรีมวัตถุสตรีมไฟล์ซิป ... วัตถุประสงค์ของบทความนี้คือการแนะนำคำอธิบายรายละเอียดของอินพุต
ลำดับชั้นของการไหล
คำนิยาม:
Java จะอ่านวัตถุข้อมูลลงในสตรีมอินพุตและวัตถุที่สามารถเขียนได้เรียกว่ากระแสเอาต์พุต แผนภาพโครงสร้างมีดังนี้:
1. อินพุตและเอาต์พุต:
อินพุต/เอาต์พุตหมายถึงอินพุตหรือเอาต์พุตของข้อมูลไปยังอุปกรณ์หรือสภาพแวดล้อมที่แน่นอน ภาษาใด ๆ มีฟังก์ชั่นของอินพุตและเอาต์พุต ในโปรแกรม Java อินพุตและเอาต์พุตจะเสร็จสมบูรณ์ผ่านสตรีม มันเชื่อมต่อกับอุปกรณ์ทางกายภาพผ่านระบบอินพุตและเอาต์พุต Java แม้ว่าอุปกรณ์ทางกายภาพจริงที่เชื่อมต่อกับสตรีมอินพุตและเอาต์พุตนั้นแตกต่างกัน แต่ก็สามารถทำงานได้ในลักษณะเดียวกัน ตัวอย่างเช่นสำหรับอินพุตและเอาต์พุตของฮาร์ดดิสก์อินพุตและเอาต์พุตของโฮสต์เครือข่ายดังนั้นจะมีปัญหาอินพุตและเอาต์พุตและโซลูชันสำหรับอุปกรณ์หรือสภาพแวดล้อมที่แตกต่างกัน
2. สตรีม:
สตรีมหมายถึงลำดับของข้อมูลที่เคลื่อนที่ระหว่างอินพุตและเอาต์พุตของคอมพิวเตอร์ ข้อมูลในลำดับสตรีมอาจเป็นข้อมูลไบนารีดิบที่ไม่ได้ประมวลผลหรือข้อมูลเฉพาะที่ตรงตามข้อกำหนดของรูปแบบที่แน่นอนหลังจากกระบวนการเข้ารหัสที่แน่นอน เป็นเรื่องปกติที่จะเรียกชิ้นส่วนที่เกี่ยวข้องกับรหัสภายในและส่วนที่เป็นอิสระจากรหัสภายนอก
จากวิธีการส่งข้อมูลสตรีมสามารถแบ่งออกเป็นสตรีมอินพุตและสตรีมเอาท์พุท จากเนื้อหาของสตรีมสตรีมสามารถแบ่งออกเป็นไบต์สตรีมและสตรีมอักขระ
(1) สตรีมอินพุตและเอาต์พุต
ฟังก์ชั่นของสตรีมอินพุตคือการอ่านข้อมูลจากด้านในของโปรแกรมไปด้านนอก
ฟังก์ชั่นของสตรีมเอาต์พุตคือการเขียนข้อมูลจากภายนอกโปรแกรมไปด้านใน
(2) สตรีมไบต์และสตรีมอักขระ
สตรีมไบต์สามารถอ่านและเขียนข้อมูลในหน่วยของไบต์ซึ่งสามารถอ่านและเขียนข้อมูลจากไบต์หนึ่งหลังจากอื่นหรืออ่านและเขียนบล็อกไบต์ที่มีความยาวใด ๆ ในแต่ละครั้ง (เช่นอาร์เรย์ไบต์)
สตรีมอักขระจะใช้ในตัวละครเมื่ออ่านและเขียนข้อมูลในสตรีมหนึ่งอักขระต่อครั้งหรือบล็อกอักขระทีละบล็อก
เพื่ออำนวยความสะดวกในการประมวลผลสตรีมสตรีมในภาษา Java จะถูกห่อหุ้มในแพ็คเกจ java.io เพื่อใช้สตรีมคุณต้องนำเข้าแพ็คเกจ java.io
สตรีม I/O ของ Java ขึ้นอยู่กับคลาสนามธรรมสี่คลาส ได้แก่ InputStream, OutputStream, Reader และ Writer คลาส InputStream และคลาสย่อยของมันสามารถใช้เพื่อใช้การประมวลผลอินพุตของข้อมูลสตรีมไบต์ คลาส OutputStream และคลาสย่อยของมันสามารถใช้เพื่อใช้การประมวลผลเอาต์พุตของข้อมูลสตรีมไบต์ คลาสผู้อ่านและคลาสย่อยของมันสามารถใช้ในการใช้การประมวลผลอินพุตของข้อมูลสตรีมอักขระ คลาสนักเขียนและคลาสย่อยสามารถใช้ในการใช้การประมวลผลเอาต์พุตของข้อมูลสตรีมอักขระ
1. คลาสไฟล์
การอ่านและการเขียนไฟล์ใน Java สามารถนำไปใช้ผ่านสตรีมอินพุตและเอาต์พุต แต่ Java มีคลาสไฟล์พิเศษเพื่อนำไปใช้สำหรับไดเรกทอรีไฟล์คุณสมบัติและข้อมูลการจัดการ
(1) ตัวสร้างของคลาสไฟล์
ตัวสร้างสำหรับการสร้างวัตถุคลาสไฟล์คือ:
ไฟล์ (ชื่อพา ธ สตริง); // สร้างตามชื่อพา ธ
ไฟล์ (ไฟล์พาเรนต์, สตริงลูก); // สร้างภายใต้วัตถุไฟล์ที่กำหนด
ไฟล์ (สตริงพาเรนต์, สตริงลูก); // สร้างขึ้นอยู่กับเส้นทางที่ระบุ
ไฟล์ (URL URL); // สร้างตามลิงค์ URL
(2) วิธีการทั่วไปของคลาสไฟล์
บูลีน canread (): กำหนดว่าเส้นทางที่สอดคล้องกับวัตถุไฟล์สามารถอ่านได้หรือไม่
บูลีน canWrite (): กำหนดว่าเส้นทางที่สอดคล้องกับวัตถุไฟล์เป็นสิ่งที่เขียนได้หรือไม่
บูลีนมีอยู่ (): กำหนดว่าเส้นทางที่สอดคล้องกับวัตถุไฟล์มีอยู่หรือไม่
String getAbsolutePath (): รับเส้นทางสัมบูรณ์ของเส้นทางที่สอดคล้องกันของวัตถุไฟล์
String getParent (): รับไดเรกทอรีของเส้นทางที่สอดคล้องกันของวัตถุไฟล์
String getPath (): รับพา ธ ที่สอดคล้องกับวัตถุไฟล์
บูลีน isabsolute (): กำหนดว่าเส้นทางที่สอดคล้องกับวัตถุไฟล์เป็นเส้นทางที่แน่นอนหรือไม่
String getName (): รับชื่อไฟล์ของเส้นทางที่สอดคล้องกันของวัตถุไฟล์
บูลีน isdirectory (): กำหนดว่าเส้นทางที่สอดคล้องกับวัตถุไฟล์เป็นไดเรกทอรีหรือไม่
บูลีน isfile (): กำหนดว่าพา ธ ที่สอดคล้องกับวัตถุไฟล์เป็นไฟล์หรือไม่
บูลีน ishidden (): กำหนดว่าไฟล์ที่สอดคล้องกับวัตถุไฟล์เป็นแอตทริบิวต์ที่ซ่อนอยู่หรือไม่
ความยาวยาว (): รับความยาวของไฟล์ที่สอดคล้องกับวัตถุไฟล์
Long LastModified (): รับเวลาการแก้ไขล่าสุดของไฟล์ที่สอดคล้องกับวัตถุไฟล์
บูลีน renameto (ไฟล์ปลายทาง): เปลี่ยนชื่อไฟล์ของไฟล์ที่สอดคล้องกับวัตถุไฟล์
บูลีน setReadOnly (): ตั้งค่าไฟล์ที่เกี่ยวข้องของวัตถุไฟล์เป็นอ่านอย่างเดียว
(3) สร้างไฟล์
สร้างไฟล์ใหม่โดยการสร้างสตรีมเอาต์พุตไฟล์ วิธีนี้ไม่สามารถสร้างไดเรกทอรีและหากไฟล์ที่คุณต้องการสร้างมีอยู่แล้วไฟล์ใหม่จะถูกสร้างขึ้นเพื่อเขียนทับไฟล์ต้นฉบับ
fileoutrputStream file = new fileOutputStream ("ชื่อไฟล์"); (4) รับรายการไฟล์
รับรายการไฟล์ของโฟลเดอร์บางอย่างผ่านรายการ () หรือ listfiles () เมธอดของคลาสไฟล์ มีหลายรูปแบบ:
สตริง [] รายการ ();
ไฟล์ [] listfiles ();
ไฟล์ [] listfiles (ตัวกรอง filenamefilter);
ไฟล์ [] listfiles (ตัวกรอง filefilter);
ในหมู่พวกเขา FileFilter และ FilenameFilter เป็นทั้งอินเทอร์เฟซและตัวกรองเป็นตัวกรองที่สอดคล้องกัน ประกาศคลาสที่แน่นอนและใช้อินเทอร์เฟซตัวกรองเพื่อให้ไฟล์ที่ตรงกันทั้งหมดสามารถแสดงรายการผ่านเงื่อนไขการกรอง
2. คลาส InputStream และคลาส OutputStream
คลาสสตรีมไบต์เป็นชุดของคลาสที่ได้จากคลาสนามธรรมอินพุตและเอาท์พุทสตรีม สตรีมประเภทนี้ขึ้นอยู่กับไบต์ คลาส InputStream และ OutputStream สามารถใช้ในการประมวลผลข้อมูลไฟล์ไบนารี แต่ยังประมวลผลไฟล์ข้อความ
1. วิธีการทั่วไปของคลาสอินพุตสตรีม
คลาส InputStream เป็นคลาสพาเรนต์ของสตรีมอินพุตทั้งหมด วิธีการทั้งหมดของชั้นเรียนนี้จะโยน iOException เมื่อเกิดข้อผิดพลาด วิธีหลักคือ:
(1) การอ่านบทคัดย่อแบบนามธรรมสาธารณะ () IOException เหล่านั้น
วิธีการส่งคืนจำนวนเต็มระหว่าง 0 ถึง 255 หรือ -1 และ -1 หมายความว่าจุดสิ้นสุดของสตรีมได้รับการพบและไบต์อื่น ๆ ที่เกี่ยวข้องอ่าน
(2) การอ่าน int สาธารณะ (byte [] b) ioexception เหล่านั้น
วิธีการอ่านไบต์ลงในอาร์เรย์ไบต์ที่กำหนดโดยพารามิเตอร์และค่าที่ส่งคืนคือจำนวนไบต์ที่อ่านจริงในหรือ -1 (พบจุดสิ้นสุดของสตรีม)
(3) การอ่านแบบสาธารณะสาธารณะ (ไบต์ [] b, int i, int b) IOException เหล่านั้น
พารามิเตอร์สองตัวสุดท้ายของวิธีการให้ตำแหน่งเริ่มต้นของการอ่านและจำนวนสูงสุดของไบต์ที่อ่านตามลำดับ
(4) INT สาธารณะ ()
ส่งคืนจำนวนไบต์ที่ยังไม่ได้อ่านในวัตถุสตรีมปัจจุบัน นั่นคือรับความยาวของข้อมูลในสตรีม
(5) การข้ามแบบสาธารณะ (ยาว N)
ข้าม N BYTES ในวัตถุสตรีมปัจจุบันและจำนวนไบต์ที่ข้ามจริงจะถูกส่งคืนเป็นค่าส่งคืน
(6) เครื่องหมายบูลีนสาธารณะ () ()
ตรวจสอบว่าการไหลรองรับเครื่องหมายหรือไม่และเครื่องหมายสามารถกลับไปยังตำแหน่งการอ่านเดิมได้อย่างง่ายดาย
(7) ช่องว่างสาธารณะปิด ()
ปิดวัตถุสตรีมปัจจุบันและปล่อยทรัพยากรที่ครอบครองโดยวัตถุสตรีม
(8) เครื่องหมายโมฆะสาธารณะ (int i)
ตั้งค่าสถานะสำหรับตำแหน่งปัจจุบันในสตรีมเพื่อให้คุณสามารถอ่านต่อจากตำแหน่งนั้นได้ในภายหลัง
(9) การรีเซ็ตโมฆะสาธารณะ ()
ส่งคืนตำแหน่งการอ่านสตรีมไปยังตำแหน่งของเครื่องหมายชุด
2. วิธีการทั่วไปของคลาส OutputStream
คลาส OutputStream เป็นคลาสหลักของสตรีมเอาต์พุตทั้งหมด วิธีการทั้งหมดของคลาสนี้ส่งคืนโมฆะและโยน ioexception ในกรณีข้อผิดพลาด วิธีหลักคือ:
(1) การเขียนโมฆะสาธารณะ (int b) โยน ioexception
เขียนไบต์ข้อมูลไปยังจุดสิ้นสุดของสตรีม
(2) โมฆะสาธารณะเขียน (ไบต์ [] b) โยน ioexception
เขียนข้อมูลในอาร์เรย์ B ไปยังวัตถุสตรีมปัจจุบัน
(3) ลวดโมฆะสาธารณะ (ไบต์ [] b, int i, int n)
เขียนข้อมูลความยาวที่ตามมาในอาร์เรย์ลงในวัตถุสตรีมตามลำดับตั้งแต่ต้น (รวมอยู่)
(4) โมฆะสาธารณะปิด ()
ปิดวัตถุสตรีมปัจจุบันและปล่อยทรัพยากรที่ครอบครองโดยวัตถุสตรีม
(5) ช่องว่างสาธารณะฟลัช ()
บังคับเอาต์พุตข้อมูลบัฟเฟอร์ในวัตถุสตรีมปัจจุบัน ใช้วิธีนี้เพื่อให้ได้ผลลัพธ์ทันที
วิธีการส่วนใหญ่ของสองคลาสข้างต้นจะถูกแทนที่ด้วย subclasses ของ inputstream และ outputstream ยกเว้นวิธีการทำเครื่องหมาย () และรีเซ็ต ()
3. คลาส FileInputStream
คลาส FileInputStream เป็นคลาสย่อยของ InputStream ซึ่งสามารถใช้ในการประมวลผลสตรีมข้อมูลที่ใช้ไฟล์เป็นแหล่งข้อมูลอินพุตเพื่อใช้การดำเนินการอ่านไฟล์
วิธีการก่อสร้างคือ:
(1) FileInputStream (ไฟล์ F)
สร้างสตรีมอินพุตไฟล์ด้วยวัตถุไฟล์ F พร้อมชื่อที่ระบุเป็นแหล่งข้อมูล
หาก F มีอยู่ควรเป็นเส้นทางไฟล์ หากเป็นไดเรกทอรี IOException จะถูกโยนลงไป แต่ถ้าไดเรกทอรีนี้ไม่มีอยู่มันจะถูกโยนลง: FilenotFoundException จะถูกโยนลงไป
(2) FileInputStream (ชื่อสตริง)
สร้างสตรีมอินพุตไฟล์พร้อมชื่อชื่อชื่อเป็นแหล่งข้อมูล
(3) FileInputStream (FileDescriptor F)
สร้างสตรีมอินพุตไฟล์สำหรับปลายอินพุตตามวัตถุ Descriptor ไฟล์ f
วิธีหลักของมันคือการแทนที่วิธีการของคลาสแม่ (คลาสอินพุตสตรีม): อ่าน (), อ่าน (ไบต์ [] b), อ่าน (byte [] b, int i, ความยาว int), ข้าม (ยาว n), มี (), ปิด ()
4. คลาส FileOutputStream
คลาส FileOutputStream เป็นคลาสย่อยของ OutputStream ซึ่งใช้ในการประมวลผลกระแสข้อมูลเอาต์พุตตามไฟล์เป็นข้อมูลและใช้การดำเนินการเขียนไปยังไฟล์ วิธีการก่อสร้างคือ:
fileOutputStream (ไฟล์ f);
FileOutputStream (ไฟล์ F, Boolean B);
FileOutputStream (String F);
วิธีการหลักของมันรวมถึงวิธีการที่ครอบคลุมคลาสหลัก: เขียน (int b), เขียน (ไบต์ [] b), เขียน (ไบต์ [] b, int ปิด, int len), close () และ flush ()
5. คลาส DatainputStream และ DataOutputStream
วัตถุที่สร้างขึ้นโดยคลาส DateInputStream และ DataOutputStream เรียกว่าสตรีมอินพุตข้อมูลและสตรีมเอาต์พุตข้อมูลตามลำดับ พวกเขาใช้อินเทอร์เฟซ Datainput และอินเตอร์เฟส DataOutput ตามลำดับ คลาส DateInputStream และวัตถุ DataOrtputStream อนุญาตให้อ่านข้อมูล Java ประเภทต่างๆ
สตรีมทั้งสองนี้เป็นของสตรีมการกรองและสตรีมอื่น ๆ เช่นอินพุตสตรีมหรือเอาท์พุทสตรีมมักใช้เป็นอินพุตหรือเอาต์พุต ตัวอย่างเช่น:
FileInputStream FIS = ใหม่ FileInputStream ("D: //a.txt");
datainputStream dis = new datainputStream (FIS);
fileOutputStream fos = ใหม่ fileOutputStream ("d: //a.txt");
DataOrtputStream DOS = ใหม่ dataOutputStream (FOS);
อินพุตและเอาต์พุตของ DateInputStream และ DataOutputStream เกือบจะสอดคล้องกัน วิธีการอ่านและการเขียนของแต่ละประเภทข้อมูลพื้นฐานสามารถระบุได้จากชื่อต่อท้าย ตัวอย่างเช่น:
readint (), writeint () // อ่านและเขียนค่า int
readboolean (), writeboolean () // อ่านและเขียนค่าบูลีน
readchar (), writechar () // อ่านและเขียนอักขระ
ReadDouble (), writedouble () // อ่านและเขียนค่าจุดลอยตัวที่แม่นยำสองเท่า
readfloat (), writefloat () // อ่านและเขียนค่าลอยความแม่นยำเดียว
writechars () // เขียนสตริง แต่ไม่มีวิธีอ่านสตริงโดยตรง
3. คลาสผู้อ่านและคลาสนักเขียน
อักขระใน Java ใช้การเข้ารหัส Unicode ตัวละครแต่ละตัวมีสองไบต์นั่นคือ 16 บิต สตรีมอักขระขึ้นอยู่กับอักขระที่แสดงด้วยรหัส Unicode 16 บิตและอ่านและเขียนข้อมูลข้อความซึ่งสามารถตระหนักถึงการแปลงระหว่างรูปแบบภายในในโปรแกรม Java และรูปแบบภายนอกเช่นไฟล์ข้อความ, เอาต์พุตแสดงผลการป้อนข้อมูลแป้นพิมพ์ ฯลฯ วิธีนี้เหมาะอย่างยิ่งสำหรับการทำงานของอักขระภาษาจีน หากอักขระจีนทำงานเป็นไบต์เป็นไปได้ที่จะส่งออกรหัสที่อ่านไม่ออก
ผู้อ่านและนักเขียนเป็นคลาสแม่ที่เป็นนามธรรมของสตรีมอักขระทั้งหมดในแพ็คเกจ java.io ซึ่งกำหนดวิธีการสำคัญเพื่อใช้คลาสสตรีมอื่น ๆ สองสิ่งที่สำคัญที่สุดคือการอ่าน () และเขียน () ซึ่งอ่านและเขียนข้อมูลอักขระตามลำดับ วิธีการของผู้อ่านและคลาสนักเขียนและคลาสย่อยของพวกเขาคล้ายกับวิธีการใช้คลาสอินพุตสตรีมคลาส OutputStream และคลาสย่อยของพวกเขา แต่พารามิเตอร์ในนั้นจะถูกแทนที่ด้วยอักขระหรืออาร์เรย์อักขระ
1. วิธีการทั่วไปของคลาสผู้อ่านและคลาสนักเขียน
คลาสผู้อ่านเป็นคลาสนามธรรม วิธีการทั้งหมดของคลาสนี้จะทำให้เกิดข้อยกเว้น IOException ภายใต้เงื่อนไขข้อผิดพลาด วิธีการทั่วไปมีดังนี้:
(1) บทคัดย่อเป็นโมฆะปิด (): ปิดแหล่งที่มาของอินพุต
(2) เครื่องหมายโมฆะ (int numchars): วางเครื่องหมายไปยังจุดปัจจุบันของแหล่งอินพุต
(3) Boolean Marksupported (): หากสตรีมนี้รองรับวิธีการทำเครื่องหมาย/รีเซ็ตจริงจะถูกส่งคืน
(4) int read (): อ่านอักขระตัวเดียว
(5) int read (char [] buf): อ่านอักขระลงในอาร์เรย์อักขระ
(6) บทคัดย่อ Int Read (Char [] buf, int offset, int numchars): อ่านอักขระเป็นส่วนหนึ่งของอาร์เรย์
(7) บูลีนพร้อม (): ส่งคืนจริงหากคำขออินพุตถัดไปไม่ต้องรอมิฉะนั้นจะส่งคืนเท็จ
(8) เป็นโมฆะรีเซ็ต (): รีเซ็ตตัวชี้อินพุตเป็นชุดที่ทำเครื่องหมายไว้ก่อน
(9) Long Skip (Long Numchars): ข้ามอินพุตอักขระ N และส่งคืนจำนวนอักขระจริงข้าม
คลาสนักเขียนยังเป็นคลาสนามธรรมและวิธีการที่ใช้กันทั่วไปมีดังนี้:
(1) บทคัดย่อ Void Close (): ปิดสตรีมเอาต์พุต
(2) นามธรรม Void Flush (): กำหนดสถานะเอาต์พุตเพื่อล้างแคชใด ๆ
(3) โมฆะเขียน (int ch): เขียนอักขระตัวเดียว
(4) โมฆะเขียน (ถ่าน [] buf): เขียนไปยังอาร์เรย์อักขระ
(5) บทคัดย่อ Void Write (char [] buf, int offset, int numchars): เขียนส่วนหนึ่งของอาร์เรย์อักขระ
(6) โมฆะเขียน (สตริง str): เขียนสตริง
(7) โมฆะเขียน (สตริง str, ออฟเซ็ต int, int numchars): เขียนส่วนของสตริง
2. คลาส Filereader
คลาส filereader สืบทอดมาจากคลาส InputStreamReader และคลาส InputStreamReader สืบทอดมาจากคลาส Reader ดังนั้นวิธีการที่จัดทำโดยคลาสผู้อ่านและคลาส InputStreamReader สามารถใช้สำหรับวัตถุที่สร้างโดยคลาส Filereader วิธีตัวสร้างของ filereader คือ:
filereader (ไฟล์ไฟล์);
filereader (Filedescriptor E);
filereader (ชื่อไฟล์สตริง);
3. คลาส FileWriter
คลาส FileWriter สืบทอดมาจากคลาส OutputStreamWriter และคลาส OutputStreamWriter สืบทอดมาจากคลาสนักเขียน ดังนั้นวิธีการที่จัดทำโดยคลาสนักเขียนและคลาส OutputStreamWriter สามารถใช้งานได้โดยวัตถุที่สร้างโดยคลาส FileWriter วิธีตัวสร้างของ FileWriter คือ:
FileWrite (ไฟล์ filepath);
FileWrite (ไฟล์ F, ต่อท้ายบูลีน);
FileWrite (FileDescriptor E);
FileWrite (ชื่อไฟล์สตริง);
FileWrite (ชื่อไฟล์สตริง, ภาคผนวกบูลีน);
4. คลาส BufferedReader
คลาส BufferedReader สืบทอดมาจากคลาส Reader ซึ่งใช้ในการอ่านข้อมูลในบัฟเฟอร์ คลาส BufferedReader เป็นของสตรีมกรองและสตรีมอื่น ๆ เช่น filereader มักจะใช้เป็นอินพุตหรือเอาต์พุต วิธีการก่อสร้างคือ:
BufferedReader (Reader In);
bufferedReader (ผู้อ่านใน, int bufsize);
ตัวอย่างเช่น:
filereader fr = filereader ใหม่ ("d: /1.txt");
bufferedReader buf = new bufferedReader (FR);
BufferedReader ให้วิธีการอ่าน () เพื่ออ่านทุกบรรทัดของข้อความ
5. คลาส BufferedWriter
คลาส BufferedWriter สืบทอดมาจากคลาสนักเขียนและคลาส BufferedWriter ใช้เพื่อเขียนข้อมูลลงในบัฟเฟอร์ การใช้คลาส BufferedWriter นั้นคล้ายกับการใช้คลาส BufferedReader ความแตกต่างคือข้อมูลในบัฟเฟอร์จะต้องล้างด้วยวิธีการ Flush () ในตอนท้ายนั่นคือเขียนข้อมูลทั้งหมดในบัฟเฟอร์ลงในไฟล์ วิธีการก่อสร้างคือ:
BufferedWriter (นักเขียนออก);
BufferedWriter (นักเขียนออก, int bufsize);
4. คลาสสุ่ม
การเข้าถึงไฟล์แบบสุ่มใน Java ต้องการการใช้คลาส RandomAccessFile (คลาสนี้อนุญาตให้เข้าถึงจากตำแหน่งใด ๆ ไม่เพียง แต่อ่าน แต่ยังเขียนด้วย) ซึ่งสืบทอดโดยตรงจากคลาสวัตถุและใช้อินเตอร์เฟส datainput และ dataOutput
เนื่องจากคลาส RandcAncessFile ใช้วิธีการทั้งหมดที่กำหนดไว้ในอินเทอร์เฟซ Datainput และ DataOutput จึงสามารถอ่านข้อมูลประเภทพื้นฐานจากไฟล์และเขียนข้อมูลประเภทพื้นฐานไปยังไฟล์ นอกเหนือจากวิธีการที่กำหนดไว้ในอินเทอร์เฟซ Datainput และ DataOutput แล้วคลาส RandomAccessFile คลาสยังกำหนดวิธีอื่น ๆ เพื่อรองรับการเข้าถึงแบบสุ่ม
สตรีมที่สร้างขึ้นโดยคลาส ApprandAccessFile นั้นแตกต่างจากกระแสอินพุตและเอาต์พุตก่อนหน้า คลาส RandomAccessFile ไม่ได้เป็นคลาสย่อยของคลาสอินพุตสตรีมในคลาสสตรีมอินพุตหรือคลาสย่อยของคลาส OutputStream ในคลาสสตรีมเอาต์พุต อย่างไรก็ตามทิศทางของสตรีมที่สร้างขึ้นโดยคลาส ApprandAccessFile สามารถใช้เป็นทั้งแหล่งที่มาและปลายทาง กล่าวอีกนัยหนึ่งเมื่ออ่านและเขียนไฟล์คุณสามารถสร้างสตรีมแบบ RandomAccessFile ที่ชี้ไปที่ไฟล์เพื่อให้คุณสามารถอ่านข้อมูลของไฟล์จากสตรีมและเขียนข้อมูลไปยังไฟล์ผ่านสตรีม
สองวิธีตัวสร้างของคลาส RandomAccessFile:
(1) RandomAccessFile (ชื่อสตริง, โหมดสตริง)
ชื่อพารามิเตอร์ใช้เพื่อกำหนดชื่อไฟล์ให้แหล่งที่มา (รวมถึงปลายทางการไหล) ของสตรีมที่สร้างขึ้นและโหมดพารามิเตอร์จะใช้ R (อ่านอย่างเดียว) หรือ RW (อ่านได้) ซึ่งกำหนดสิทธิ์การเข้าถึงของสตรีมที่สร้างขึ้นไปยังไฟล์
(2) RandomAccessFile (ไฟล์ไฟล์, โหมดสตริง)
ไฟล์พารามิเตอร์เป็นวัตถุไฟล์ซึ่งให้แหล่งที่มา (รวมถึงปลายทางของสตรีม) โหมดพารามิเตอร์ใช้ R (อ่านอย่างเดียว) หรือ RW (อ่านได้) และกำหนดสิทธิ์การเข้าถึงของสตรีมที่สร้างขึ้นไปยังไฟล์ เมื่อสร้างวัตถุควรจับ filenotfoundexception; เมื่อสตรีมดำเนินการอ่านและเขียนการดำเนินการ IOException ควรถูกจับ
วิธีการอ่านและการเขียนข้อมูลของ Object RandomaccessFile นั้นเหมือนกับวิธีการป้อนข้อมูลและส่งออกวัตถุข้อมูล สามารถเข้าถึงวิธีการอ่าน () และเขียน () ทั้งหมดในคลาส DatainputStream และ DataOutputStream
วิธีย้ายไฟล์อ่านและเขียนพอยน์เตอร์:
(1) Long GetFilePointer (): ส่งคืนตำแหน่งปัจจุบันของตัวชี้ไฟล์
(2) Void Seek (Long POS): วางตัวชี้ไฟล์ในตำแหน่งสัมบูรณ์ที่ระบุ ค่าตำแหน่งจะถูกคำนวณเป็น BYTE OFFSET POS จากจุดเริ่มต้นของไฟล์ POS คือ 0 ซึ่งแสดงถึงจุดเริ่มต้นของไฟล์
(3) ความยาวยาว (): ส่งคืนความยาวของไฟล์ ค่าตำแหน่งคือความยาว () ซึ่งแสดงถึงจุดสิ้นสุดของไฟล์