Java 将文件转为字节数组知识总结及实例详解
这里有新鲜出炉的 Java 函数式编程, 程序狗速度看过来!
Java 程序设计语言
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言, 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台 (即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se)) 的总称
这篇文章主要介绍了 Java 将文件转为字节数组实例详解的相关资料, 需要的朋友可以参考下
Java 将文件转为字节数组
关键字: 文件, 文件流, 字节流, 字节数组, 二进制
摘要: 最近工作中碰到的需求是, 利用 http 传输二进制数据到服务器对应接口, 需要传输 userId, file(加密后)等一系列混合后的二进制数据本文旨在记录自己在使用 Java 将文件转为字节数组的一些知识理解与汇总
FileInputStream
利用 FileInputStream 读取文件
FileInputStream 是 InputStream 的子类, 用于从文件中读取信息, 构造器接收一个 File 类型或表示文件路径的 String 类型
- File file = new File("filePath");
- FileInputStream fis = new FileInputStream(file);
- ByteArrayOutputStream
利用 ByteArrayOutputStream 将 FileInputStream 中的文件数据读出来
ByteArrayOutputStream 是用来在内存中创建缓冲区, 所有送往流的数据都要放置在此缓冲区中
- ByteArrayOutputStream bos = new ByteArrayOutputStream(fis);
- byte[] b = new byte[1024];
- int len = -1;
- while ((len = fis.read(b)) != -1) {
- bos.write(b, 0, len);
- }
注意: ByteArrayOutputStream 的 write 方法有三种重载形式:
write(int b)
写入指定字节
write(byte[] b)
写入整个字节数组 b
write(byte[] b, int off, int len)
写入字节数组 b, 从 b 的第 off 下标开始, 写入 len 个字节
这里没有使用第二中, 而是使用了第三种, 在代码中每次获取读入缓冲区 b 中的数量, 一般为 1024(因为定义 b 的时候显示指定了长度), 只有当读到结尾的时候, 可能不够 1024 个字节了, 也会读取实际的读取字节数, 但是在写入缓冲区的时候, 如果不指定写入的数量, 即不指定 len, 那么就会将整个 b 全部写入, 即使 b 中只有一部分内容, 但是依然会写入 1024 个字节这将导致使用 toByteArray 时, 得到的字节数组不是实际长度!
这样就将文件流从 InputStream 中写入了 ByteArrayOutputStream 中
利用 ByteArrayOutputStream 的 toByteArray()方法得到文件的字节数组
byte[] fileByte = bos.toByteArray();
来源: http://www.phperz.com/article/18/0214/359103.html