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

TCM*_*TCM 0 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());
Run Code Online (Sandbox Code Playgroud)

当我将BUFFER大小更改为500时,它给我一个7 kb的文件,当我将BUFFER大小更改为100000时,它会给出一个400 kb的文件,其中内容会一次又一次地重复.请帮忙.我该怎么做才能防止这种情况发生?

Joa*_*uer 6

必须记住的返回值read()调用,因为read不能保证整个缓冲区已经填满.

您将需要记住该值并在追加调用中使用它仅附加许多字符.

否则,你会将未初始化的字符附加到StringBuffer实际上并非来自的Reader(可能是0之前read()调用的或者之前的值).