【问题标题】:AES java on usb drive not workingUSB驱动器上的AES java无法正常工作
【发布时间】:2010-11-18 20:28:51
【问题描述】:

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

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

有人知道如何通过闪存驱动器工作吗?

【问题讨论】:

    标签: java usb portability aes


    【解决方案1】:

    我认为这不起作用的唯一原因是 USB 上的缓冲区大小可能大于磁盘上的大小,并且您可能没有正确刷新输出流缓冲区(或正确关闭输入文件)。

    检查你的 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 块中关闭您的输入文件。这在很多情况下都让我感到困惑——但现在没有了:)

    【讨论】:

    • 文件已正确关闭,因此它可能来自缓冲区大小。我该如何解决?因为缓冲区大小是我的代码是一样的。
    • 只要确保你在 close() 之前调用了 flush() 并且缓冲区应该不是问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    • 2013-04-03
    相关资源
    最近更新 更多