我正在尝试使用CipherOutputStream支持的ByteArrayOutputStream加密字符串并将加密的字节存储在原始字节数组中,但是ByteArrayOutputStream对象的大小保持为零,并且在将某些内容写入CipherOutputStream对象后,它不包含任何字节。这是代码。

ByteArrayOutputStream out = new ByteArrayOutputStream();
CipherOutputStream cos = new CipherOutputStream(out, c);
PrintWriter pw = new PrintWriter(cos);
pw.println("Write something");
cos.flush();
out.flush();
System.out.println(out.size());
pw.close();

因此,我尝试通过使用以下代码将ByteArrayOutputStream更改为FileOutputStream进行比较。原来,加密的字节已写入目标文件。有谁知道为什么我不能在这里使用ByteArrayOutputStream?您还能提出解决方案吗?
FileOutputStream out = new FileOutputStream("/path/encrypted.txt");
CipherOutputStream cos = new CipherOutputStream(out, c);
PrintWriter pw = new PrintWriter(cos);
pw.println("Write something");
pw.close();

最佳答案

这些片段之间的唯一区别是,在第一种情况下,您在关闭流之前检查内容,而在第二种情况下-在关闭之后。因此,我想您需要在检查之前关闭流。

10-08 19:29