我面临一个非常奇怪的问题,即同一个循环在BUFFER值的变化上不断给出不同的输出
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());
当我将BUFFER大小更改为500时,它给我一个7 kb的文件,当我将BUFFER大小更改为100000时,它会给出400 kb的文件,其中内容会一次又一次地重复。请帮忙。我应该怎么做才能防止这种情况发生?
答案 0 :(得分:6)
您必须记住read()
来电的返回值,因为read
不保证整个缓冲区已被填充。< / p>
你需要记住这个值,并在追加调用中使用它只附加那么多字符。
否则,您会将未经初始化的字符附加到实际上并非来自StringBuffer
的{{1}}(可能是Reader
或前一0
所写的值呼叫)。