Java ช่วยให้นักพัฒนาสามารถทำงานกับไฟล์ได้ ในกรณีดังกล่าว “ อินพุตสตรีม ” คลาสมีผลบังคับใช้ที่ช่วยในการอ่านเนื้อหาไฟล์ที่ระบุพร้อมกับการวิเคราะห์ไบต์ที่มีอยู่ ส่งผลให้จัดการกับปัญหาหน่วยความจำและส่งคืนเนื้อหาไฟล์ที่เลือกตามความต้องการได้อย่างมีประสิทธิภาพ
บทความนี้จะอธิบายอย่างละเอียดเกี่ยวกับการทำงานของ “InputStream” ใน Java
Java InputStream ทำงานอย่างไร
คลาส “InputStream” ของ “ java.io ” แพ็คเกจสอดคล้องกับ superclass นามธรรมที่ส่งคืนสตรีมอินพุตที่ประกอบด้วยไบต์เทียบกับไฟล์ที่ระบุ
คลาสย่อยของ InputStream
ในการใช้ฟังก์ชัน 'InputStream' สามารถใช้คลาสย่อยต่อไปนี้ได้:
-
- FileInputStream
- ObjectInputStream
- ByteArrayInputStream
คลาสย่อยเหล่านี้ขยายคลาส 'InputStream'
วิธีการของ InputStream
คลาส 'InputStream' มีเมธอดต่างๆ ที่ใช้โดยคลาสย่อย ต่อไปนี้เป็นวิธีที่ใช้บ่อยที่สุด:
วิธีการ | ฟังก์ชั่น |
อ่าน() | อ่านข้อมูลหนึ่งไบต์จากสตรีมอินพุต
|
อ่าน (ไบต์ [] อาร์เรย์) | นอกจากนี้ยังอ่านไบต์จากสตรีมและจัดเก็บไว้ในอาร์เรย์เป้าหมาย
|
ข้าม() | วิธีนี้จะข้าม/ละเว้นจำนวนไบต์ที่ระบุจากสตรีมอินพุต
|
มีอยู่() | มันให้ไบต์ที่มีอยู่ในสตรีมอินพุต |
รีเซ็ต () | ช่วยให้เข้าถึงจุดสตรีมที่ตั้งค่าเครื่องหมายไว้
|
เครื่องหมาย() | วิธีนี้ทำเครื่องหมายตำแหน่งในสตรีมจนกว่าจะอ่านข้อมูลใด
|
เครื่องหมายรองรับ () | โดยจะวิเคราะห์ว่าเมธอด “mark()” และ “reset()” ได้รับการสนับสนุน/เข้ากันได้ในสตรีมหรือไม่
|
ก่อนไปที่ตัวอย่าง ให้นำเข้าแพ็คเกจต่อไปนี้เพื่อทำงานร่วมกับ “InputStream” และคลาสย่อยของมัน:
นำเข้า java.io.InputStream;
ตัวอย่าง: การทำงานของ InputStream ใน Java
ตัวอย่างนี้แสดงการทำงานของ “InputStream” โดยการอ่านเนื้อหาไฟล์ผ่านเมธอด “InputStream”:
Inputstream ระดับสาธารณะ {โมฆะสาธารณะคงหลัก ( อาร์กิวเมนต์สตริง [ ] ) {
ไบต์ [ ] givenarray = ไบต์ใหม่ [ ห้าสิบ ] ;
พยายาม {
InputStream readData = FileInputStream ใหม่ ( 'readfile.txt' ) ;
System.out.println ( 'ไบต์ในไฟล์ ->' + readData.available ( ) ) ;
อ่านข้อมูลอ่าน ( กำหนดให้ ) ;
System.out.println ( 'อ่านข้อมูลไฟล์: ' ) ;
สตริงมีข้อมูล = สตริงใหม่ ( กำหนดให้ ) ;
System.out.println ( มีข้อมูล ) ;
อ่านข้อมูลปิด ( ) ;
}
จับ ( ยกเว้น ) {
ยกเว้น.getStackTrace ( ) ;
}
} }
ตามบรรทัดโค้ดด้านบน ให้ทำตามขั้นตอนด้านล่าง:
-
- ขั้นแรก สร้างอาร์เรย์ 'ไบต์' ที่สามารถมีได้สูงสุด ' ห้าสิบ ” ค่าไบต์ในไฟล์ที่อ่าน
- ในขั้นตอนถัดไป สร้าง “ อินพุตสตรีม ” โดยใช้ “FileInputStream” และส่งคืนไบต์ที่มีอยู่ในไฟล์ที่ระบุผ่าน “ มีอยู่() ' วิธี.
- หลังจากนั้น อ่านไบต์จากสตรีมอินพุตโดยใช้ปุ่ม ' อ่าน() ' วิธี.
- ตอนนี้ แปลงอาร์เรย์ไบต์เป็นสตริงและแสดงเนื้อหาของไฟล์
- สุดท้าย ปิดไฟล์อ่านโดยใช้ที่เกี่ยวข้อง “ ปิด() ' วิธี.
เอาต์พุต
ในผลลัพธ์นี้ อาจบอกเป็นนัยได้ว่าจำนวนไบต์ในไฟล์ เช่น พื้นที่สะสมตามเนื้อหาจะถูกส่งคืนตามช่วงสูงสุดในอาร์เรย์ไบต์ เช่น '50' นอกจากนี้ เนื้อหาของไฟล์จะถูกส่งกลับอย่างเหมาะสม
เนื้อหาไฟล์
เพื่อดูภาพรวมของ “ ข้าม() ' และ ' รีเซ็ต () ” วิธีการ พิจารณาการสาธิตต่อไปนี้:
ในภาพประกอบนี้ เมธอด “skip()” จะข้ามจำนวนไบต์ที่ระบุ เช่น “ 5 -> ชวา ” จากเนื้อหาไฟล์ตั้งแต่เริ่มต้น อย่างไรก็ตามเมธอด “reset()” จะรีเซ็ตสตรีม
บทสรุป
“ อินพุตสตรีม ” คลาสของ “ java.io ” package เป็น superclass เชิงนามธรรมที่สอดคล้องกับกระแสอินพุตของไบต์ที่ใช้สำหรับอ่านข้อมูลไฟล์ คลาสนี้ประกอบด้วยเมธอดต่างๆ ที่ช่วยในการอ่านเมธอดของไฟล์อย่างมีประสิทธิภาพตามความต้องการ บล็อกนี้แสดงจุดประสงค์และการทำงานของ “InputStream” ใน Java