2010-03-24 43 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

相关问题