2012-11-14 26 views
0

我有一個文件的字節數組字符串,並希望採取的每一個字節減去2或類似的東西,後來採取加2。我想要做的是這樣的:字節 - 2然後下一次+2不起作用...爲什麼?

byte buffer[] = new byte[(int) file.length()]; 
try { 
    in = new FileInputStream(file); 
    in.read(buffer); 

    for(int i = 0; i < buffer.length; i++){ 
     buffer[i] = (byte) (buffer[i]-2); // and then later +2 
    } 
} 

但它不起作用。首先,它會像我想要的那樣更改文件,但稍後當我將整個文件+2改爲另一個文件時,它會給我一些奇怪的東西。

所以都在一起我想這一點:

  1. 獲取所謂buffer
  2. 然後改變一些值
  3. 改變這些值回
  4. 獲取相同的文件之前
一個字節數組
+0

嘗試使用調試器在操作前後檢查字節數組。這會告訴你它是算法問題還是I/O問題。 –

回答

2

代碼中有一些錯誤:

  1. new byte[(int) file.length()];這將決定性的領先優勢進入一個OutOfMemoryError或文件
  2. in.read(buffer);這將的貪官讀只讀一些字節的文件。
  3. 你用「加密」標記了這個問題。這根本就不是加密的。將內容「解密」真的很容易。

您的文件仍然是一樣的長度?

1

您需要使用in.read()調用的返回值來確切知道實際讀入緩衝區的字節數,以及寫入輸出的字節數。

相關問題