我可以認爲這不起作用的唯一原因是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塊中。這已經讓我出去了很多場合 - 不再是:)
這些文件已正確關閉,因此它可能來自緩衝區大小。 我該如何解決這個問題?因爲緩衝區大小是我的代碼是一樣的。 – user512684 2010-11-18 21:13:55
只需確保在close()之前調用flush()並且緩衝區不應該成爲問題。 – Chris 2011-02-25 21:48:18