In Java, we can use Files.readAllBytes(path)
to convert a File
object into a byte[]
.
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 The NIO Files
class is available since Java 7.
1. FileInputStream
Before Java 7, we can initiate a new byte[]
with a predefined size (same with the file length), and use FileInputStream
to read the file data into the new byte[]
.
// 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(); } } }
Or this try-with-resources
version.
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-IO
If we have Apache Commons IO, try FileUtils
.
import org.apache.commons.io.FileUtils; //... File file = new File("/path/file"); byte[] bytes = FileUtils.readFileToByteArray(file);
pom.xml
<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.7</version> </dependency>
3. Convert File to byte[] and vice versa.
The below example uses the NIO Files.readAllBytes
to read an image file into a byte[]
, and Files.write
to save the byte[]
into a new image file.
FileToBytes.java
package com.favtuts.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/tvt/workspace/favtuts/phone.png"; // file to bytes[] byte[] bytes = Files.readAllBytes(Paths.get(filePath)); // bytes[] to file Path path = Paths.get("/home/tvt/workspace/favtuts/phone2.png"); Files.write(path, bytes); System.out.println("Done"); } catch (IOException e) { e.printStackTrace(); } } }
Download Source Code
$ git clone https://github.com/favtuts/java-core-tutorials-examples
$ cd java-io/howto