В 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-ввод-вывод
Рекомендации
- Файловый поток ввода javadoc
- Файлы JavaDoc
- Общий доступ Apache IO
- Ява – Как сохранить массивы байтов в файл
Оригинал: “https://mkyong.com/java/how-to-convert-file-into-an-array-of-bytes/”