Java InputStream ทำงานอย่างไร

Java Inputstream Thangan Xyangri



Java ช่วยให้นักพัฒนาสามารถทำงานกับไฟล์ได้ ในกรณีดังกล่าว “ อินพุตสตรีม ” คลาสมีผลบังคับใช้ที่ช่วยในการอ่านเนื้อหาไฟล์ที่ระบุพร้อมกับการวิเคราะห์ไบต์ที่มีอยู่ ส่งผลให้จัดการกับปัญหาหน่วยความจำและส่งคืนเนื้อหาไฟล์ที่เลือกตามความต้องการได้อย่างมีประสิทธิภาพ

บทความนี้จะอธิบายอย่างละเอียดเกี่ยวกับการทำงานของ “InputStream” ใน Java







Java InputStream ทำงานอย่างไร

คลาส “InputStream” ของ “ java.io ” แพ็คเกจสอดคล้องกับ superclass นามธรรมที่ส่งคืนสตรีมอินพุตที่ประกอบด้วยไบต์เทียบกับไฟล์ที่ระบุ



คลาสย่อยของ InputStream

ในการใช้ฟังก์ชัน 'InputStream' สามารถใช้คลาสย่อยต่อไปนี้ได้:



    • FileInputStream
    • ObjectInputStream
    • ByteArrayInputStream

คลาสย่อยเหล่านี้ขยายคลาส 'InputStream'





วิธีการของ InputStream

คลาส 'InputStream' มีเมธอดต่างๆ ที่ใช้โดยคลาสย่อย ต่อไปนี้เป็นวิธีที่ใช้บ่อยที่สุด:

วิธีการ ฟังก์ชั่น
อ่าน() อ่านข้อมูลหนึ่งไบต์จากสตรีมอินพุต



อ่าน (ไบต์ [] อาร์เรย์) นอกจากนี้ยังอ่านไบต์จากสตรีมและจัดเก็บไว้ในอาร์เรย์เป้าหมาย

ข้าม() วิธีนี้จะข้าม/ละเว้นจำนวนไบต์ที่ระบุจากสตรีมอินพุต

มีอยู่() มันให้ไบต์ที่มีอยู่ในสตรีมอินพุต
รีเซ็ต () ช่วยให้เข้าถึงจุดสตรีมที่ตั้งค่าเครื่องหมายไว้

เครื่องหมาย() วิธีนี้ทำเครื่องหมายตำแหน่งในสตรีมจนกว่าจะอ่านข้อมูลใด

เครื่องหมายรองรับ () โดยจะวิเคราะห์ว่าเมธอด “mark()” และ “reset()” ได้รับการสนับสนุน/เข้ากันได้ในสตรีมหรือไม่


ก่อนไปที่ตัวอย่าง ให้นำเข้าแพ็คเกจต่อไปนี้เพื่อทำงานร่วมกับ “InputStream” และคลาสย่อยของมัน:

นำเข้า java.io.FileInputStream;
นำเข้า 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