有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java:我需要从outputstream中获取字节数组

在我的例子中,输出流基本上是FileOutputStream。因此,对于该代码:

ByteArrayOutputStream bos = (ByteArrayOutputStream) streamToEncrypt;

(其中streamToEncrypt是OutputStream)正在获取此异常:

java.lang.ClassCastException: java.io.FileOutputStream cannot be cast to java.io.ByteArrayOutputStream

我需要做的就是从这个输出流中获取字节数组。 我无法访问此级别的文件。我所拥有的只是这个输出流,在将其推送到文件之前必须对其进行加密


共 (2) 个答案

  1. # 1 楼答案

    这根本没有任何意义

    ByteArrayOutputStream会将您推送到其中的数据。。。并将它们存储在以后可以检索的字节数组中

    FileOutputStream获取数据。。。并将其推送到文件中

    这是两个完全不同的阶层;你不能把一个投进另一个!这就像你试图把一个字符串转换成一个整数;或者说“你是苹果,现在是香蕉”,把苹果变成香蕉。根本不行

    因此,这里真正的“答案”是:你应该后退一步,明确你打算对数据做什么;然后使用与该需求匹配的流

  2. # 2 楼答案

    无法从OutputStream中获取字节。你把他们从InputStream中弄出来。将字节放入OutputStream

    如果字节已经被写入OutputStream,那就太晚了。再次打开文件并从中读取是访问这些数据的唯一方法

    如果要加密输出流,应该构造流并将其传递给写入流的代码

    Cipher enc = Cipher.getInstance("...");
    enc.init(...);
    try (OutputStream fos = Files.newOutputStream(path);
         OutputStream os = new CipherOutputStream(fos, enc)) {
       writingObject.write(os);
    }