如何在Java中将文件转换为字节数组
时间:2020-01-09 10:35:29 来源:igfitidea点击:
这篇文章展示了使用Java将文件转换为字节数组的不同方法。
- 我们可以使用FileInputStream类的read(byte [] b)方法,该方法从此输入流中读取最多b.length个字节的数据到字节数组中。参见示例。
- 从Java 7开始,我们可以使用Files.readAllBytes()方法从文件读取所有字节并返回字节数组。参见示例。
- Apache CommonsIO还具有方法IOUtils.toByteArray和FileUtils.readFileToByteArray将文件转换为字节数组。要使用它,我们必须将CommonsIO jar放入项目的类路径中。参见示例。
Java程序将文件转换为字节数组
让我们看一下使用上述选项在Java中将文件转换为字节数组的示例。
使用FileInputStream类的read方法
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Arrays; public class FileToBytearray { public static void main(String[] args) { File file = new File("D:\test.txt"); byte[] bArray = convertFileToByteArray(file); System.out.print(Arrays.toString(bArray)); } private static byte[] convertFileToByteArray(File file){ FileInputStream fis = null; // Creating bytearray of same length as file byte[] bArray = new byte[(int) file.length()]; try{ fis = new FileInputStream(file); // Reading file content to byte array fis.read(bArray); fis.close(); }catch(IOException ioExp){ ioExp.printStackTrace(); }finally{ if(fis != null){ try { fis.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } return bArray; } }
输出:
[49, 48, 48, 49, 124, 49, 48, 48, 51, 124, 50, 48, 48, 48, 13, 10, 49, 48, 48, 54, 124, 50, 48, 48, 52, 124, 51, 48, 48, 48, 13, 10, 49, 48, 48, 53, 124, 49, 48, 48, 55, 124, 49, 48, 48, 48, 48, 13, 10, 84, 104, 105, 115, 32, 105, 115, 32, 97, 32, 116, 101, 115, 116, 32, 108, 105, 110, 101, 46, 10, 76, 105, 110, 101, 32, 119, 114, 105, 116, 116, 101, 110, 32, 98, 121, 32, 74, 97, 118, 97, 32, 112, 114, 111, 103, 114, 97, 109, 32, 105, 110, 32, 107, 110, 112, 67, 111, 100, 101, 46, 99, 111, 109, 46]
如我们所见,输出是一系列字节。
使用Files.readAllBytes()方法将文件转换为字节数组
import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Arrays; public class FileToBytearray { public static void main(String[] args) { Path path = Paths.get("D:\test.txt"); try { byte[] bArray = Files.readAllBytes(path); System.out.println(Arrays.toString(bArray)); } catch (IOException e) { System.out.println("Error while converting " + e.getMessage()); } } }
使用Apache CommonsIO实用程序方法
如前所述,如果使用Apache CommonsIO,可以使用两种方法将文件转换为字节数组。
- IOUtils.toByteArray –此方法将FileInputStream对象作为参数。
- FileUtils.readFileToByteArray –将File实例作为参数传递。
使用IOUtile.toByteArray
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Arrays; import org.apache.commons.io.IOUtils; public class FileToBytearray { public static void main(String[] args) { File file = new File("D:\test.txt"); try(FileInputStream fis = new FileInputStream(file)) { byte[] bArray; bArray = IOUtils.toByteArray(fis); System.out.println(Arrays.toString(bArray)); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
使用FileUtils.readFileToByteArray
import java.io.File; import java.io.IOException; import java.util.Arrays; import org.apache.commons.io.FileUtils; public class FileToBytearray { public static void main(String[] args) { File file = new File("D:\test.txt"); byte[] bArray; try { bArray = FileUtils.readFileToByteArray(file); System.out.println(Arrays.toString(bArray)); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }