用Java将文件读入字节数组的7个示例

这篇博客介绍了Java中将文件内容读取到字节数组的7种方法,包括使用Apache Commons IOUtils、FileUtils、FileInputStream、Google Guava Files、ByteStreams等。文章强调了处理大文件时的限制和注意事项,以及在不同场景下选择合适方法的重要性。
摘要由CSDN通过智能技术生成

嗨,大家好,Java程序员经常在现实世界中遇到编程问题,他们需要将文件中的数据加载到字节数组中,该文件可以是文本或二进制文件。 一个示例是将文件的内容转换为String以便显示。 不幸的是,用于表示文件和目录的Java的File类没有方法toByteArray() 。 它仅保存路径,并允许您执行某些操作,例如打开和关闭文件,但不允许直接将File转换为字节数组 。 无论如何,无需担心,因为还有其他几种将File读入字节数组的方法,您将在此Java文件教程中学习这些方法。

如果您像我一样是Apache Commons和Google Guava的粉丝,那么您可能已经熟悉单行代码,该代码可以将文件快速读取为字节数组。 如果不是,那么现在正是探索这些API的合适时机。

在本教程中,我们将看到7个不同的示例,以将File读取为字节数组 ,一些示例使用第三方库,而另一些示例使用JDK 6和JDK 7核心Java库。

根据您的选择,可以使用以下任何一种方法将文件数据转换为字节。 要记住的一件事是您对字节数组的处理方式。 如果要从字节数组创建String ,请提防字符编码。 您可能需要通过读取元数据信息(例如HTML页面和XML文档的Content-Type)来找出正确的字符编码。

在读取XML文档时,首先读取XML文件并将其存储在String中是个坏主意。 相反,最好将InputStream传递给XML解析器,它们将自己正确地确定编码。

还有一点要注意的是,您不能将大于2GB的文件读取到一个字节数组中,为此您需要多个字节数组。 此限制来自Java中的数组索引为int类型,其最大值为2147483647 ,大约等于2GB

顺便说一句,我希望您总体上熟悉基本的Java编程和Java API。

用Java将文件读入字节数组的7种方法

在不浪费您更多时间的情况下,以下是将文件加载到Java中的字节数组中的所有七种方法:

1)使用Apache Commons IOUtils

如果您不讨厌第三方库,这是将文件数据读入字节数组最简单方法之一。 它之所以有用,是因为您不需要从头开始编写代码,也不必担心异常处理等。

 byte [] filedata = IOUtils.toByteArray( new FileInputStream( "info.xml" [] filedata = IOUtils.toByteArray( "info.xml" )); 

IOUtils.toByteArray(InputStream input)获取以下内容:
InputStream作为byte [] 。 此方法还在内部缓冲输入,因此无需使用BufferedInputStream ,但它不是null安全的。 如果输入为null ,则抛出NullPointerException

2)使用Apache Commons FileUtils

org.apache.commons.io包中的FileUtils class提供了常规的文件操作功能,例如写入文件或从文件读取。 此方法用于将文件的内容读取到字节数组中,这的好处是文件始终处于关闭状态。

 byte [] data = FileUtils.readFileToByteArray( new File( "info.xml" )); 

3)使用FileInputStream和JDK

这是将文件内容读入字节数组的经典方法。 完成操作后,别忘了关闭流 。 这是使用Java中的FileInputStream类将文件读入字节数组的代码:

 public static byte [] readFile(String file) throws IOException {  
    File f = new File(file);  
    // work only for 2GB file, because array index can only up to Integer.MAX  
    byte [] buffer = new byte [( int )f.length()];  
    FileInputStream is = new Fi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值