Java 解密后缺少几个字符
这是我的原始xml:Java 解密后缺少几个字符,java,encryption,Java,Encryption,这是我的原始xml: <?xml version="1.0" encoding="UTF-8"?> <table> <row> <id>12</id> <name>Mickey Mouse</name> </row> </table> 请帮忙。谢谢。尝试关闭(或至少刷新)您的CipherOutputStream(cos),因为可能有一些字节
<?xml version="1.0" encoding="UTF-8"?>
<table>
<row>
<id>12</id>
<name>Mickey Mouse</name>
</row>
</table>
请帮忙。谢谢。尝试关闭(或至少刷新)您的CipherOutputStream
(cos
),因为可能有一些字节从未写入原始加密文件。发现问题。做
cos.close();
行前:
fos.close();
至少,这把它固定在我的箱子上了 写入加密输出后,调用
cos.close();
而不是
fos.close();
关闭cos对象也会关闭基础fos对象。同意JASON的观点。您必须关闭密码流而不是文件。即使您可以显式地关闭这两个流,但请确保先关闭密码流,然后再关闭文件流。只有冲洗没有帮助。至少它对我不起作用。:) 我真的不得不盯着它看,看有哪些角色不见了。它似乎是结束标记中的“table”。不需要table标记,它总是最后几个字符:(谢谢!没想到io流的关闭顺序会影响结果。故事的寓意是:始终关闭输入/输出流的外层。在关闭fos cos.flush();fos.flush();fos.close();cos.close()之前,我试图刷新它们。);仍然不起作用。刷新是不够的,因为CipherOutputStream需要知道在写入最后一个块之前将不再有数据。
cos.close();
fos.close();