Java 将文件读取到byte[]数组

Java 将文件读取到byte[]数组

原文: https://howtodoinjava.com/java/io/how-to-read-file-content-into-byte-array-in-java/

在 Java 中,在各种情况下都可能需要将文件读取到字节数组。 该字节数组可用于通过网络以及其他程序 API 进行进一步处理。 让我们了解几种在 Java 中将文件中的数据读取到字节数组中的方法。

1. 使用 NIO 将文件读取到byte[]数组(Java 7 及更高版本)

如果使用的是 Java 7,则Files.readAllBytes()是最好的方法。否则,您将需要下面列出的其他 3 个选项中的任何方法。

public class ContentToByteArrayExample
{
   public static void main(String[] args)
   {
      Path path = Paths.get("C:/temp/test.txt");
      byte[] data = Files.readAllBytes(path);
   }
}

在使用 Java 8 的情况下,也可以使用此方法。

阅读更多:使用 Java NIO 读取文件的 3 种方法

2. 使用FileInputStream将文件读取到byte[]数组(直到 Java 6)

我正在使用java.io.FileInputStream读取文件的内容,然后将读取的内容转换为字节。

import java.io.File;
import java.io.FileInputStream;

public class ContentToByteArrayExample
{
   public static void main(String[] args)
   {

      File file = new File("C:/temp/test.txt");

      readContentIntoByteArray(file);
   }

   private static byte[] readContentIntoByteArray(File file)
   {
      FileInputStream fileInputStream = null;
      byte[] bFile = new byte[(int) file.length()];
      try
      {
         //convert file into array of bytes
         fileInputStream = new FileInputStream(file);
         fileInputStream.read(bFile);
         fileInputStream.close();
         for (int i = 0; i < bFile.length; i++)
         {
            System.out.print((char) bFile[i]);
         }
      }
      catch (Exception e)
      {
         e.printStackTrace();
      }
      return bFile;
   }
}

3. 使用FileUtilsIOUtils将文件读取到字节数组

将数据读入字节数组的另一种好方法是在 Apache Commons IO 库中(如果允许在项目中使用它)。

//Using FileUtils.readFileToByteArray()
byte[] org.apache.commons.io.FileUtils.readFileToByteArray(File file)

//Using IOUtils.toByteArray
byte[] org.apache.commons.io.IOUtils.toByteArray(InputStream input) 

4. 使用 Google Guava 将文件读入字节数组

将数据读入字节数组的另一种好方法是 Google Guava 库(如果允许在您的项目中使用它)。

//Using Files.toByteArray()
byte[] com.google.common.io.Files.toByteArray(File file)

//Using ByteStreams.toByteArray
byte[] com.google.common.io.ByteStreams.toByteArray(InputStream is)

学习愉快!