我是android的新手,在看书时无法理解循环中新分配的原因。在循环之前制作一次还不够吗?

        FileInputStream fIn =
                openFileInput("textfile.txt");
        InputStreamReader isr = new
                InputStreamReader(fIn);
        char[] inputBuffer = new char[READ_BLOCK_SIZE];
        String s = "";
        int charRead;
        while ((charRead = isr.read(inputBuffer))>0)
        {
            //---convert the chars to a String---
            String readString =
            String.copyValueOf(inputBuffer, 0,
            charRead);
            s += readString;
            inputBuffer = new char[READ_BLOCK_SIZE];
        }

最佳答案

仅分配一次缓冲区就足够了,因此您只需删除循环内的分配,它就可以正常工作。

还有另一件事...该代码的性能真的很差,因为它在循环中使用字符串连接。您应该使用StringBuilder.append()而不是s += readString

附言我建议您选择另一本书,因为这本书在如此简单的代码中有太多错误。

07-24 09:27