2010-03-24 42 views
0

我面臨一個很奇怪的問題,在同一迴路一直給我上的BUFFER給予不同輸出的同一循環。 Java的IO

final int BUFFER = 100; 
     char[] charArr = new char[BUFFER]; 
     StringBuffer objStringBuffer = new StringBuffer(); 
     while (objBufferedReader.read(charArr, 0,BUFFER) != -1) { 
      objStringBuffer.append(charArr); 
     } 
objFileWriter.write(objStringBuffer.toString()); 

價值變動不同的不同的輸出當我改變緩衝區大小爲500它給了我7 KB時的文件我將BUFFER大小更改爲100000,它會給出一個400 kb的文件,其中的內容會一遍又一遍地重複。請幫忙。我該怎麼做才能防止這種情況發生?

+0

'BUFFER'是一個誤導性的名稱,用於指定緩衝區大小**的變量。你應該把它叫做'BUFFER_SIZE'。 – 2010-03-24 10:16:45

+0

你的代碼似乎並不完整。如何定義objBufferedReader? – Riduidel 2010-03-24 10:16:55

回答

6

必須記得read()調用的返回值,因爲read保證整個緩衝區已經填滿。

您將需要記住該值,並在附加調用中使用它以僅附加多個字符。

否則,你就追加未初始化字符,以StringBuffer未竟來自Reader(可能是以前read()調用其寫入0或值)。

+0

+1該死的,你更快:-) – 2010-03-24 10:17:07

+0

有一個StringBuffer函數用於此目的: append(char str [],int offset,int len) 而且您應該使用StringBuilder的方式,如果不需要同步。 – tigger 2010-03-24 10:19:02

+0

太棒了!感謝Joachim。這真的很快 – TCM 2010-03-24 10:23:26

相關問題