如何在Java中将InputStream转换为byte[]数组?所有方法
大家好!我是Java新手,遇到了一个问题:我需要从InputStream(例如从文件或HTTP响应)中读取所有数据,并将其以byte[]数组的形式获取。但我不知道如何正确实现。
以下是我尝试过的:
InputStream input = new FileInputStream("data.bin");
byte[] data = ??? // 如何获取字节数组?
问题在于InputStream无法让我提前知道数据的大小。available()方法返回的不是完整大小,而是当前无需阻塞即可读取的数据量。我尝试过循环读取,但代码变得很笨拙且经常出错。
我听说过ByteArrayOutputStream,但不知道如何正确使用。还听说过Java 9中的readAllBytes(),但我的项目使用的是Java 8。请推荐一个通用且可靠的方法,适用于所有Java版本。
关键点:我需要的是字节数组,而不是字符串。