Java 将文件转为字节数组知识总结及实例详解

所属分类: 软件编程 / java 阅读数: 27
收藏 0 赞 0 分享

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();

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

更多精彩内容其他人还在看

SpringBoot环境搭建及第一个程序运行(小白教程)

这篇文章主要介绍了SpringBoot环境搭建及第一个程序运行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

过滤器 和 拦截器的 6个区别(别再傻傻分不清了)

这篇文章主要介绍了过滤器 和 拦截器的 6个区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

SpringBoot整合SpringTask实现定时任务的流程

这篇文章主要介绍了SpringBoot整合SpringTask实现定时任务的流程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

vscode快速引入第三方jar包发QQ邮件

这篇文章主要介绍了vscode快速引入第三方jar包发QQ邮件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Java Enum和String及int的相互转化示例

这篇文章主要介绍了Java Enum和String及int的相互转化示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Spring boot如何快速的配置多个Redis数据源

这篇文章主要介绍了Spring boot如何快速的配置多个Redis数据源,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

JAVA 对接腾讯云直播的实现

这篇文章主要介绍了JAVA 对接腾讯云直播的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

JavaSE static final及abstract修饰符实例解析

这篇文章主要介绍了JavaSE static final及abstract修饰符实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

SpringBoot定时任务参数运行代码实例解析

这篇文章主要介绍了SpringBoot定时任务运行代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Spring Boot调用 Shell 脚本实现看门狗功能

这篇文章主要介绍了Spring Boot调用 Shell 脚本实现看门狗功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多