Android:读取大文本文件

时间:2014-03-10 17:26:47

标签: android

我需要在循环中读取一个大文本文件。

我在代码中使用set Buffer 1024 * 1024尝试了这个解决方案,但android应用程序中文本文件的输出不完整。

有什么想法吗? 谢谢

u = new URL(path);
HttpURLConnection c = (HttpURLConnection) u
        .openConnection();
c.setRequestMethod("GET");
c.connect();
InputStream in = c.getInputStream();
final ByteArrayOutputStream bo = new ByteArrayOutputStream();
byte[] buffer = new byte[1024 * 1024];
in.read(buffer);
bo.write(buffer);
String s = bo.toString();
final Vector<String> str = new Vector<String>();
String[] line = s.split("\n");
int index = 0;
while (index < line.length) {
    str.add(line[index]);
    index++;
}

1 个答案:

答案 0 :(得分:1)

你正在做的事情根本没有意义。

首先。你正在分配一个巨大的缓冲区(1MB)并没有错,但不是最好的选择。您通常有一个小缓冲区(例如4KB)并在输入文件上循环,直到您到达文件结束(EOF),每次从文件中读取一个字符串时,您应将其附加到StringBuilder对象。

二。您正在读取变量中的字符串,然后将其拆分为数组,然后再将其连接到字符串中。这有什么意义呢?

有很多关于如何在Android中阅读文本文件的示例,例如hereherehere

编辑:
在我放置的那些链接中,有一些示例用于逐行读取文件,因此您不必搜索换行符。另外,如果你想在数组中使用行,你可以通过删除将新读取的字符串附加到StringBuilder的代码,并将其替换为将新读取的字符串添加到数组中的代码。