在Java 中,如何把二进制文件(如图片,ssl证书 )转化为字节数组呢?
代码如下:
- @org.junit.Test
- public void test055() throws IOException {
- File inFile = new File("d:\\Chrysanthemum.jpg");
- FileInputStream fileInputStream = new FileInputStream(inFile);
- ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
- int i;
- //转化为字节数组流
- while ((i = fileInputStream.read()) != -1) {
- byteArrayOutputStream.write(i);
- }
- fileInputStream.close();
- // 把文件存在一个字节数组中
- byte[] filea = byteArrayOutputStream.toByteArray();
- byteArrayOutputStream.close();
- String encoding = "ISO-8859-1";
- String fileaString = new String(filea, encoding);
- System.out.println(fileaString);
- // 写入文件
- FileOutputStream fileOutputStream = new FileOutputStream("d:/b.png");
- fileOutputStream.write(fileaString.getBytes(encoding));
- fileOutputStream.flush();
- fileOutputStream.close();
- }
注意:
(1)使用ByteArrayOutputStream 来把二进制流转化为字节数组流;
(2)把字节数组转化为String类型时,一定要使用ISO-8859-1编码;
String encoding = "ISO-8859-1";
String fileaString = new String(filea, encoding);
(3)通过字符串获取字节数组时,一定要使用ISO-8859-1编码:
fileOutputStream.write(fileaString.getBytes(encoding));