将文件内容转化为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数组。

      

所以,没毛病~

 

posted @ 2018-05-04 11:15  Seraphjin  阅读(2544)  评论(1编辑  收藏  举报