我正在尝试使用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();
最佳答案
这些片段之间的唯一区别是,在第一种情况下,您在关闭流之前检查内容,而在第二种情况下-在关闭之后。因此,我想您需要在检查之前关闭流。