2013-02-07 84 views
-2

我有一個和朋友一起寫的項目,我們遇到了線程問題。代碼選擇一個文件,加密或解密它並將其寫入一個文件(每個文件pdf,docx,mpeg,mkv等)。AES加密算法,並行編程,java

選擇,開始與RandomAccessFile的輸入和輸出對象,

byte[] temp new byte[16]; 
readedByte=1; 
while(16*readedByte<fileLenght){ 
       for(i=0;i<16;i++){ 
       temp[i]=input.readByte(); 
       } 
       byte[] newTemp=AES.encrypt(temp, k.getBytes("ISO-8859-9")); 
       output.write(newTemp); 
       readedByte++; 
      } 

我想寫一個線程,做好這項工作。線程將讀取16個字節,對它們進行加密並寫入輸出對象。

+0

爲什麼你想寫一個明確的線程來完成這項工作?是不是因爲你沒有阻止用戶界面? –

+0

實際上必須寫一個線程,我認爲這種方式是最簡單的,因爲它已經讀取文件並寫入文件。如果你認爲比我更好的方式聽你:) – user2052517

回答

0

只需將您的方法放入運行。並嘗試適應它以解決您的問題

Thread thread = new Thread(new Runnable() { 

      @Override 
      public void run() { 
       byte[] temp = new byte[16]; 
       int readedByte = 1; 
       while(16 * readedByte < fileLenght) { 

        for(int i = 0; i < 16; i++) { 
         temp[i] = input.readByte(); 
        } 
        byte[] newTemp = AES.encrypt(temp, k.getBytes("ISO-8859-9")); 
        output.write(newTemp); 
        readedByte++; 
       } 

      } 
     }); 
     thread.start(); 
+0

哪裏有輸入和輸出?我可以在每一個線程打開和關閉文件,但它不是一個很好的性能 – user2052517

+0

只是在線程外執行並且通過線程中的任何想要檢查的變量 –

+0

好吧,我如何給線程提供參數? – user2052517