同一循环给出不同的输出。 Java IO

时间:2010-03-24 10:11:56

标签: java

我面临一个非常奇怪的问题,即同一个循环在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的文件,其中内容会一次又一次地重复。请帮忙。我应该怎么做才能防止这种情况发生?

1 个答案:

答案 0 :(得分:6)

必须记住read()来电的返回值,因为read 保证整个缓冲区已被填充。< / p>

你需要记住这个值,并在追加调用中使用它只附加那么多字符。

否则,您会将未经初始化的字符附加到实际上并非来自StringBuffer的{​​{1}}(可能是Reader或前一0所写的值呼叫)。