[Java]整理把文件获取到bytes字节的几种方式

2023-01-01 55点热度 0人点赞 0条评论

开发中常有需求将文件转成byte[]数组的场景,这里总结了一下几种常用的File转bytes的方式(直接转成bytes需要在内存里存放,所以仅使用文件不大的场景,如果遇到的文件很大,那么可能做法不是这样的,例如使用随机读取,一边读取一边处理等方式(RandomAccessFile)):

  • 使用apache commons io 这个库,引入依赖:
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.11.0</version>
</dependency>

引入后,代码中这样使用:

byte[] bytes = org.apache.commons.io.IOUtils.toByteArray(Files.newInputStream(file.toPath()));
  • 使用Java的NIO
Path path = Paths.get(file.getAbsolutePath());
byte[] bytes = Files.readAllBytes(path);
  • 最传统的方式,用流读出来
InputStream is = new FileInputStream(file);
ByteArrayOutputStream buffer = new ByteArrayOutputStream();

int nRead;
byte[] data = new byte[8192];

while ((nRead = is.read(data, 0, data.length)) != -1) {
  buffer.write(data, 0, nRead);
}

return buffer.toByteArray();

 

admin

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论