2014-01-27 101 views
0

我正在編寫一個簡單的程序來獲取文件,使用AES對其進行加密,並使用Java將輸出存儲在單獨的文件中。 Java對我來說是一種新的語言,但它在某些方面類似於C#,並且我一直在使用C#,所以學習一直比較順利。Java中的加密線程的進度

我的問題是,我想在一個單獨的線程中運行AES密碼,這似乎很容易,但我希望能夠在Swing進度條中向用戶報告大致的進度。我不知道如何獲得加密狀態以便能夠將其報告給用戶。

我確實有一個想法,我想獲得有關的意見,除非有一個更簡單的方法來做到這一點。我的想法是,在加密開始之前,以字節爲單位獲得輸入文件的大小,然後在計時器上查找當前輸出文件中的字節數,以確定完成百分比。然而,當我在Java中的另一個線程中打開一個句柄時,我確實想知道是否能夠在輸出文件上打開一個新的文件句柄。我的解決方案是否可行?還是有更簡單的方法來完成它?

+0

你用於AES的包是什麼? – user1428716

+0

還沒有決定。如果有一個讓這更容易,我會使用它。我一直在閱讀javax.crypto.cipher,看起來很有希望。 – seanr8

回答

0

這裏應該是方法 -

strToEncrypt =文件內容(假設可以) 您應該使用cipher.getOutputSize(strToEncrypt.getBytes().length)

獲得文件的輸出估計。現在這很棘手 - 你應該運行一些示例代碼來確定在寫入一些字節時的文件大小。 Windows can give a different estimate of file sizeUNIX will give your the correct file size (in terms of byte length you get from this code)

一旦得到字節數組大小的估計值 - 您可以使用java.io.File來獲取大小並計算出它的百分比。

0

如果知道文件的大小,請使用類似CountingInputStream的東西,然後使用getCount()到目前爲止讀取的字節數來計算百分比。