将文件内容转化为byte数组返回
如何将文件内容转化为byte数组并返回呢?对于这个问题,我献上我第一次成功的代码~
package com.succez.task1; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; /** * <p>Copyright: Copyright (c) 2018</p> * <p>succez</p> * @author ZhangJinjin * @createdate 2018年5月3日 */ public class fileToBuf { /** * 将文件内容转换成byte数组返回,如果文件不存在或者读入错误返回null
* * 这里需要在内存中创建一个字节数组缓冲区,将读取的文件字节数据写入到缓冲区中 * 最后将字节流转换成byte数组,并关闭资源 * 当出现文件找不到异常和输入输出异常时需要捕获 */ public static byte[] file2buf(File fobj){ byte[] buffer = null; try{ if (!fobj.exists()) { return null; } FileInputStream fis = new FileInputStream(fobj); ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte[] b = new byte[1024]; int len=-1; while ((len = fis.read(b)) != -1) { bos.write(b, 0, len); } fis.close(); bos.close(); buffer = bos.toByteArray(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return buffer; } /* * 两个测试用例 * */ public static void main(String []args){ File fobj1 = new File("E:\\TestExample\\test1.txt"); byte[] buffer1=fileToBuf.file2buf(fobj1); System.out.println(buffer1); File fobj2 = new File("E:\\TestExample\\test2.docx"); byte[] buffer2=fileToBuf.file2buf(fobj2); System.out.println(buffer2); } }
结果如下:
仔细分析了一遍,我觉得挺好的,还怎么改,开玩笑!
流程再走一遍:
FileInputStream 从文件系统中的某个文件中获得输入字节,读取文本原始字节流。
ByteArrayOutputStream 此类实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray()
和 toString()
获取数据。
一直读入数据,并且,将其写入到缓冲区中
利用toByteArray()方法转化为byte数组。
所以,没毛病~