📜  Java程序将InputStream转换为字节数组(1)

📅  最后修改于: 2023-12-03 15:32:05.166000             🧑  作者: Mango

Java程序将InputStream转换为字节数组

在Java编程中,我们经常需要将InputStream(输入流)转换为字节数组。这是因为InputStream是一种用于读取数据的抽象类,而字节数组则是处理二进制数据的基本单元。在本篇文章中,我们将介绍如何使用Java程序将InputStream转换为字节数组。

代码演示
public static byte[] readBytes(InputStream inputStream) throws IOException {
    byte[] buffer = new byte[8192];
    int bytesRead;
    ByteArrayOutputStream output = new ByteArrayOutputStream();
    while ((bytesRead = inputStream.read(buffer)) != -1) {
        output.write(buffer, 0, bytesRead);
    }
    return output.toByteArray();
}

该代码段先创建一个byte数组,用于读取InputStream中的数据。接着,我们使用ByteArrayOutputStream将读取到的字节数据保留在内存中。在while循环的每一次迭代中,读取数据并将其写入ByteArrayOutputStream。最后,使用toByteArray()方法将数据转换成字节数组并返回。

用例
try (InputStream inputStream = new FileInputStream(new File("/path/to/file"))) {
    byte[] bytes = readBytes(inputStream);
    // Do something with the bytes
} catch (IOException e) {
    e.printStackTrace();
}

该代码段打开一个文件输入流并调用readBytes方法读取文件中的所有字节。在try-with-resources语法中,确保输入流在try块执行完毕后自动关闭。

总结

本文介绍了如何使用Java程序将InputStream转换为字节数组。读取InputStream的最简单方法是使用ByteArrayOutputStream。此外,我们还展示了如何在Java程序中使用这种技术。使用这种技术时,请确保当你完成InputStream数据读取后关闭流。