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

> 原文： [https://howtodoinjava.com/java/io/how-to-read-file-content-into-byte-array-in-java/](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()`](https://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#readAllBytes%28java.nio.file.Path%29)是最好的方法。否则，您将需要下面列出的其他 3 个选项中的任何方法。

```java
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 种方法](//howtodoinjava.com/java-7/nio/3-ways-to-read-files-using-java-nio/ "3 ways to read files using Java NIO")

## 2\. 使用`FileInputStream`将文件读取到`byte[]`数组（直到 Java 6）

我正在使用[`java.io.FileInputStream`](https://docs.oracle.com/javase/7/docs/api/java/io/FileInputStream.html)读取文件的内容，然后将读取的内容转换为字节。

```java
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\. 使用`FileUtils`和`IOUtils`将文件读取到字节数组

将数据读入字节数组的另一种好方法是在 [Apache Commons IO](https://commons.apache.org/io/) 库中（如果允许在项目中使用它）。

```java
//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](https://github.com/google/guava) 库（如果允许在您的项目中使用它）。

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

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

```

学习愉快！