我有基于用户密码解密文件的Java类。 我有一个demo.jar和一个包含加密内容的文件content.txt。程序运行并根据用户密码将文件解密为名为content_recovered.txt的文件
只要我在计算机上执行此操作,它就会很好用。我把文件放在闪存驱动器上并从那里运行它不起作用。文件content_recovered.txt已创建但为空!
有人知道如何让它在闪存盘中运行吗?
答案 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块中的输入文件。这在很多场合让我失望了 - 尽管如此:不再是:)