Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

เมื่อใดควรใช้เมธอด readAllBytes () ของ InputStream ใน Java 9


ตั้งแต่ Java 9 เราสามารถใช้ readAllBytes() วิธีการจาก InputStream คลาสเพื่ออ่านไบต์ทั้งหมดลงในอาร์เรย์ไบต์ เมธอดนี้อ่านไบต์ทั้งหมดจาก อ็อบเจ็กต์ InputStream พร้อมกันและบล็อกจนกว่าไบต์ที่เหลือทั้งหมดจะอ่านและตรวจพบจุดสิ้นสุดของสตรีม หรือมีข้อยกเว้นเกิดขึ้น

reallAllBytes() เมธอดไม่สามารถปิด InputStream . ได้โดยอัตโนมัติ ตัวอย่าง. เมื่อถึงจุดสิ้นสุดของสตรีม การเรียกใช้เมธอดเพิ่มเติมสามารถส่งคืนอาร์เรย์ไบต์ว่าง เราสามารถใช้วิธีนี้สำหรับกรณีการใช้งานทั่วไปซึ่งสะดวกที่จะอ่านไบต์ทั้งหมดลงในอาร์เรย์ไบต์ และไม่ได้มีไว้สำหรับอ่านสตรีมอินพุตที่มีข้อมูลจำนวนมาก

ไวยากรณ์

public byte[] readAllBytes() throws IOException

ในตัวอย่างด้านล่าง เราได้สร้าง "Technology.txt" ไฟล์ใน "C:\Temp" โฟลเดอร์ที่มีข้อมูลอย่างง่าย:{ "JAVA", "PYTHON", "JAVASCRIPT", "SELENIUM", "SCALA"}.

ตัวอย่าง

import java.nio.*;
import java.nio.file.*;
import java.io.*;
import java.util.stream.*;
import java.nio.charset.StandardCharsets;

public class ReadAllBytesMethodTest {
   public static void main(String args[]) {
      try(InputStream stream = Files.newInputStream(Paths.get("C://Temp//Technology.txt"))) {
         // Convert stream to string
         String contents = new String(stream.readAllBytes(), StandardCharsets.UTF_8);

         // To print the string content
         System.out.println(contents);
      } catch(IOException ioe) {
         ioe.printStackTrace();
      }
   }
}

ผลลัพธ์

"JAVA", "PYTHON", "JAVASCRIPT", "SELENIUM", "SCALA"