Рубрики
Без рубрики

Java – Как конвертировать файл в байт[]

В Java мы можем использовать “Files.ReadAllBytes(путь)” для преобразования объекта “Файл” в “байт[]”.

В Java мы можем использовать Files.ReadAllBytes(путь) чтобы преобразовать Файл объект в байт[] .

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

  String filePath = "/path/to/file";

  // file to byte[], Path
  byte[] bytes = Files.readAllBytes(Paths.get(filePath));

  // file to byte[], File -> Path
  File file = new File(filePath);
  byte[] bytes = Files.readAllBytes(file.toPath());

P.S НИО Файлы класс доступен с Java 7.

1. Входной поток файла

До Java 7 мы можем инициировать новый байт[] с предопределенным размером (таким же, как и длина файла) и использовать FileInputStream для чтения данных файла в новый байт[] .

  // file to byte[], old and classic way, before Java 7
  private static void readFileToBytes(String filePath) throws IOException {

      File file = new File(filePath);
      byte[] bytes = new byte[(int) file.length()];

      FileInputStream fis = null;
      try {

          fis = new FileInputStream(file);

          //read file into bytes[]
          fis.read(bytes);

      } finally {
          if (fis != null) {
              fis.close();
          }
      }

  }

Или эта попробуйте-с-ресурсами версия.

private static void readFileToBytes(String filePath) throws IOException {

    File file = new File(filePath);
    byte[] bytes = new byte[(int) file.length()];

    // funny, if can use Java 7, please uses Files.readAllBytes(path)
    try(FileInputStream fis = new FileInputStream(file)){
        fis.read(bytes);
    }

}

2. Apache Commons-ИО

Если у нас есть Apache Commons IO , попробуйте FileUtils .

import org.apache.commons.io.FileUtils;

  //...
  File file = new File("/path/file");
  byte[] bytes = FileUtils.readFileToByteArray(file);
  
      commons-io
      commons-io
      2.7
  

3. Преобразуйте файл в байт[] и наоборот.

В приведенном ниже примере используется NIO Files.ReadAllBytes для чтения файла изображения в байт[] и Files.write для сохранения байта[] в новый файл изображения.

package com.mkyong.io.howto;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class FileToBytes {

    public static void main(String[] args) {

        try {

            String filePath = "/home/mkyong/test/phone.png";

            // file to bytes[]
            byte[] bytes = Files.readAllBytes(Paths.get(filePath));

            // bytes[] to file
            Path path = Paths.get("/home/mkyong/test/phone2.png");
            Files.write(path, bytes);

            System.out.println("Done");

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

Скачать Исходный Код

$клон git $клон git

$cd java-ввод-вывод

Рекомендации

Оригинал: “https://mkyong.com/java/how-to-convert-file-into-an-array-of-bytes/”