如何在 Java 中將輸入流轉換為位元組陣列?


Java 中的 InputStream 類提供 read() 方法。此方法接受一個 byte 陣列,並將輸入流的內容讀入給定的 byte 陣列。

示例

程式碼示例

import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
public class StreamToByteArray {
    public static void main(String args[]) throws IOException{    
       InputStream is = new BufferedInputStream(System.in);
       byte [] byteArray = new byte[1024];
       System.out.println("Enter some data");
       is.read(byteArray);      
       String s = new String(byteArray);
       System.out.println("Contents of the byte stream are :: "+ s);
   }  
}

輸出

Enter some data
hello how are you
Contents of the byte stream are :: hello how are you

備選方案

Apache commons 提供了一個稱為 org.apache.commons.io 的庫,以下是將庫新增到專案中的 maven 依賴項。

<dependency>
    <groupId>commons-io</groupId>
   <artifactId>commons-io</artifactId>
   <version>2.5</version>
</dependency>

此程式包提供了一個稱為 IOUtils 的類。此類的 toByteArray() 方法接受一個 InputStream 物件,並以位元組陣列的形式返回流中的內容

示例

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.commons.io.IOUtils;
public class StreamToByteArray2IOUtils {
   public static void main(String args[]) throws IOException{    
      File file = new File("data");
      FileInputStream fis = new FileInputStream(file);
      byte [] byteArray = IOUtils.toByteArray(fis);
      String s = new String(byteArray);
      System.out.println("Contents of the byte stream are :: "+ s);
   }  
}

輸出

Contents of the byte stream are :: hello how are you

更新於:06-3-2020

1K+ 瀏覽量

開啟你的 職業

透過完成課程獲得認證

開始
廣告