AES java上的USB驱动无法正常工作

时间:2010-11-18 20:28:51

标签: java usb portability aes

我有基于用户密码解密文件的Java类。 我有一个demo.jar和一个包含加密内容的文件content.txt。程序运行并根据用户密码将文件解密为名为content_recovered.txt的文件

只要我在计算机上执行此操作,它就会很好用。我把文件放在闪存驱动器上并从那里运行它不起作用。文件content_recovered.txt已创建但为空!

有人知道如何让它在闪存盘中运行吗?

1 个答案:

答案 0 :(得分:0)

我能想到为什么这不起作用的唯一原因是USB上的缓冲区大小可能大于磁盘上的缓冲区大小,您可能无法正确刷新输出流缓冲区(或正确关闭输入文件)。 / p>

检查您的io代码以确保在写入时正在刷新和关闭,并确保在阅读时没有打开其他文件引用:

OutputSteam os = null;

try {
   os = new BufferedOutputStream(new FileOutputStream(folder,"content.txt"));
   writeEncryptedFile(os); // do your file writing here
} catch (Exception e) {
   e.printStackTrace(); // whatever your error logging is here.
} finally {
   if (os != null) {
      // MUST ALWAYS FLUSH BEFORE CLOSING OUTPUTSTREAM
      try { os.flush(); } catch (Exception e) {}
      try { os.close(); } catch (Exception e) {}
   }
}

另外 - 确保您也关闭了finally块中的输入文件。这在很多场合让我失望了 - 尽管如此:不再是:)