มีวิธีการอีกมากมายของคลาส File Input Stream ซึ่งมีประโยชน์มากในการรับข้อมูลจากไฟล์ บางตัวเป็นแบบ int read(byte[] b) ฟังก์ชันนี้อ่านข้อมูลจากสตรีมอินพุตสูงสุด b.length ไบต์ในความยาว File Channel ได้รับช่อง (): วัตถุ File Channel เฉพาะที่เชื่อมต่อกับสตรีมอินพุตไฟล์จะถูกส่งคืนโดยใช้ Finalize() ใช้เพื่อให้แน่ใจว่าฟังก์ชัน close() ถูกเรียกใช้เมื่อไม่มีการอ้างอิงถึงสตรีมอินพุตไฟล์อีกต่อไป”
ตัวอย่าง 01: การอ่านไบต์เดียวจากไฟล์ข้อความโดยใช้เมธอด read() และ close() ของคลาสสตรีมอินพุต
ตัวอย่างนี้ใช้ File Input Stream เพื่ออ่านอักขระตัวเดียวและพิมพ์เนื้อหา สมมติว่าเรามีไฟล์ชื่อ “file.txt” โดยมีเนื้อหาที่แสดงด้านล่าง:
สมมติว่าเรามีไฟล์ชื่อ 'file.txt' โดยมีเนื้อหาที่แสดงด้านบน ให้เราลองอ่านและพิมพ์อักขระตัวแรกของไฟล์
เราต้องนำเข้า java.io ก่อน แพ็คเกจ File Input Stream เพื่อสร้างสตรีมอินพุตไฟล์ จากนั้นเราจะสร้างวัตถุใหม่ของ File Input Stream ที่จะเชื่อมโยงกับไฟล์ที่ระบุ (file.txt) ในตัวแปร 'f'
ในตัวอย่างนี้ เราจะใช้เมธอด “int read()” ของคลาส Java File Input Stream ซึ่งใช้ในการอ่านไบต์เดียวจากไฟล์และบันทึกลงในตัวแปร “I” ถัดไป “System.out.print(char(i))” จะแสดงอักขระที่สอดคล้องกับไบต์นั้น
f.close() วิธีปิดไฟล์และสตรีม เราจะได้ผลลัพธ์ต่อไปนี้หลังจากสร้างและรันสคริปต์ดังกล่าว เนื่องจากเราจะเห็นเฉพาะอักษรเริ่มต้นของข้อความ 'L' เท่านั้นที่พิมพ์
ตัวอย่าง 02: การอ่านเนื้อหาทั้งหมดของไฟล์ข้อความโดยใช้เมธอด read() และ close() ของคลาสสตรีมอินพุต
ในตัวอย่างนี้ เราจะอ่านและแสดงเนื้อหาทั้งหมดของไฟล์ข้อความ ดังที่แสดงด้านล่าง:
อีกครั้ง เราจะนำเข้า java.io แพ็คเกจ File Input Stream เพื่อสร้างสตรีมอินพุตไฟล์
ขั้นแรก เราจะอ่านไบต์แรกของไฟล์และแสดงอักขระที่เกี่ยวข้องภายในลูป while ลูป while จะทำงานจนกว่าจะไม่มีไบต์เหลือ นั่นคือ จุดสิ้นสุดของข้อความในไฟล์ บรรทัดที่ 12 จะอ่านไบต์ถัดไป และการวนซ้ำจะดำเนินต่อไปจนถึงไบต์สุดท้ายของไฟล์
หลังจากคอมไพล์และรันโค้ดด้านบนแล้ว เราจะได้ผลลัพธ์ดังนี้ อย่างที่เราเห็น ข้อความทั้งหมดของไฟล์ 'Lorep Ipsum' จะแสดงในเทอร์มินัล
ตัวอย่าง 03: การกำหนดจำนวนไบต์ที่มีอยู่ในไฟล์ข้อความโดยใช้วิธีการที่มีอยู่ () ของคลาสสตรีมอินพุต
ในตัวอย่างนี้ เราจะใช้ฟังก์ชัน “available()” ของ File Input Stream เพื่อกำหนดจำนวนไบต์ที่มีอยู่ในสตรีมอินพุตไฟล์
ขั้นแรก เราสร้างอ็อบเจ็กต์ของคลาสสตรีมอินพุตไฟล์ชื่อ “a” ด้วยรหัสต่อไปนี้ ในบรรทัดที่ 5 เราใช้เมธอด “available()” เพื่อกำหนดและแสดงจำนวนไบต์ทั้งหมดที่มีอยู่ในไฟล์ จากบรรทัดที่ 6 ถึงบรรทัดที่ 8 เราใช้ฟังก์ชัน 'read()' สามครั้ง ในบรรทัดที่ 9 เราใช้วิธี “available()” อีกครั้งเพื่อตรวจสอบและแสดงไบต์ที่เหลือ
หลังจากคอมไพล์และรันโค้ดแล้ว เราจะเห็นบรรทัดแรกของเอาต์พุตแสดงจำนวนไบต์ทั้งหมดที่มีอยู่ในไฟล์ บรรทัดถัดไปแสดงจำนวนไบต์ที่มีอยู่ที่ส่วนท้ายของโค้ด ซึ่งน้อยกว่า 3 ไบต์ที่มีอยู่ที่จุดเริ่มต้น เนื่องจากเราใช้วิธีการอ่านสามครั้งในโค้ดของเรา
ตัวอย่างที่ 04: การข้ามไบต์ของไฟล์ข้อความเพื่ออ่านข้อมูลจากจุดที่ระบุโดยใช้วิธีการ skip() ของคลาสสตรีมอินพุต
ในตัวอย่างนี้ เราจะใช้เมธอด “skip(x)” ของ File Input Stream ซึ่งใช้เพื่อละเว้นและละเว้นจำนวนไบต์ของข้อมูลที่ระบุจากสตรีมอินพุต
ในโค้ดด้านล่าง ขั้นแรก เราได้สร้างสตรีมอินพุตไฟล์และจัดเก็บไว้ในตัวแปร 'a' ต่อไป เราได้ใช้วิธี “a.skip(5)” ซึ่งจะข้าม 5 ไบต์แรกของไฟล์ ต่อไป เราพิมพ์อักขระที่เหลือของไฟล์โดยใช้เมธอด “read()” ภายในลูป while สุดท้าย เราปิดสตรีมอินพุตไฟล์โดยวิธี 'close()'
ด้านล่างนี้เป็นภาพหน้าจอของเทอร์มินัลหลังจากรวบรวมและรันโค้ด ดังที่เราเห็น มีเพียง “Ipsum” เท่านั้นที่จะแสดงเมื่อเราข้าม 5 ไบต์แรกโดยใช้วิธี “skip()”
บทสรุป
ในบทความนี้ เราได้กล่าวถึงการใช้คลาส File Input Stream และวิธีการต่างๆ อ่าน () พร้อมใช้งาน () ข้าม () และปิด () เราใช้วิธีการเหล่านี้เพื่ออ่านองค์ประกอบแรกของไฟล์โดยใช้เมธอด read() และ close() จากนั้นเราอ่านไฟล์ทั้งหมดด้วยวิธีวนซ้ำและใช้วิธีการเดียวกัน จากนั้นเราใช้วิธีการ available() เพื่อกำหนดจำนวนไบต์ที่มีอยู่ในตอนเริ่มต้นและความสมบูรณ์ของไฟล์ หลังจากนั้น เราใช้เมธอด skip() เพื่อข้ามหลายไบต์ก่อนอ่านไฟล์ ซึ่งทำให้เราได้รับข้อมูลเฉพาะที่เราต้องการ