我正在尝试用Java编写将加密文件的代码。我曾使用过这个网站的例子: http://www.avajava.com/tutorials/lessons/how-do-i-encrypt-and-decrypt-files-using-des.html
一切正常但我需要的代码会用加密的文件覆盖原始文件。我只改变了这个:
FileInputStream fis = new FileInputStream("original.txt");
FileOutputStream fos = new FileOutputStream("original.txt");
encrypt(key, fis, fos);
FileInputStream fis2 = new FileInputStream("original.txt");
FileOutputStream fos2 = new FileOutputStream("original.txt");
加密有效,但解密后解密文件为空。 有人能解释我的问题是什么以及如何解决?
谢谢!
答案 0 :(得分:2)
您不应同时使用FileInputStream
和FileOutputStream
阅读和覆盖同一文件。通常情况下,你会很幸运,但行为将根据底层系统而有所不同,这并不好。而是写入临时文件,然后将临时文件移动到原始文件的位置。