android从文件中读取

时间:2013-01-08 16:08:06

标签: java android

我是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];
        }

2 个答案:

答案 0 :(得分:3)

来自String.copyValueOf javadoc:

  /**
 * Creates a new string containing the specified characters in the character
 * array. Modifying the character array after creating the string has no
 * effect on the string.
 *
 * @param start
 *            the starting offset in the character array.
 * @param length
 *            the number of characters to use.

所以没有理由在循环中创建一个新的char []。

答案 1 :(得分:1)

仅分配缓冲区一次就足够了,所以你可以删除循环中的分配,它应该运行良好。

另一件事......这段代码性能非常差,因为它在循环中使用字符串连接。您应该使用StringBuilder.append()代替s += readString

P.S。我建议你选择另一本书,因为这个简单的代码中有太多的错误。