读取超过 130000 行文本的大型文本文件
Reading a large text file with over 130000 line of text
如何将大文本文件读入我的应用程序?
这是我的代码,但它不起作用。我的代码必须读取名为 list.txt 的文件。该代码仅适用于 只有 10.000 行 的文件。
有人可以帮助我吗?
谢谢!
我的代码:(处理小文件,但不处理大文件)
private void largefile(){
String strLine2="";
wwwdf2 = new StringBuffer();
InputStream fis2 = this.getResources().openRawResource(R.raw.list);
BufferedReader br2 = new BufferedReader(new InputStreamReader(fis2));
if(fis2 != null) {
try {
LineNumberReader lnr = new LineNumberReader(br2);
String linenumber = String.valueOf(lnr);
while ((strLine2 = br2.readLine()) != null) {
wwwdf2.append(strLine2 + "\n");
}
// Toast.makeText(getApplicationContext(), linenumber, Toast.LENGTH_LONG).show();
Toast.makeText(getApplicationContext(), wwwdf2, Toast.LENGTH_LONG).show();
} catch (IOException e) {
e.printStackTrace();
}
}
}
由于您正在处理一个大文件,因此您应该分块处理数据。在这里你的文件读取很好但是你继续添加字符串缓冲区中的所有行并最终传递给 Toast.makeText()。它会在内存中产生很大的占用空间。相反,您可以阅读 100-100 行并调用 Toast.makeText() 以分块处理。还有一件事,使用字符串生成器而不是字符串缓冲区来避免不必要的同步开销。您在方法内部初始化 wwwdf2 变量,但看起来它是一个我认为不需要的实例变量。在方法中声明它以使其范围更短。
如何将大文本文件读入我的应用程序? 这是我的代码,但它不起作用。我的代码必须读取名为 list.txt 的文件。该代码仅适用于 只有 10.000 行 的文件。 有人可以帮助我吗? 谢谢!
我的代码:(处理小文件,但不处理大文件)
private void largefile(){
String strLine2="";
wwwdf2 = new StringBuffer();
InputStream fis2 = this.getResources().openRawResource(R.raw.list);
BufferedReader br2 = new BufferedReader(new InputStreamReader(fis2));
if(fis2 != null) {
try {
LineNumberReader lnr = new LineNumberReader(br2);
String linenumber = String.valueOf(lnr);
while ((strLine2 = br2.readLine()) != null) {
wwwdf2.append(strLine2 + "\n");
}
// Toast.makeText(getApplicationContext(), linenumber, Toast.LENGTH_LONG).show();
Toast.makeText(getApplicationContext(), wwwdf2, Toast.LENGTH_LONG).show();
} catch (IOException e) {
e.printStackTrace();
}
}
}
由于您正在处理一个大文件,因此您应该分块处理数据。在这里你的文件读取很好但是你继续添加字符串缓冲区中的所有行并最终传递给 Toast.makeText()。它会在内存中产生很大的占用空间。相反,您可以阅读 100-100 行并调用 Toast.makeText() 以分块处理。还有一件事,使用字符串生成器而不是字符串缓冲区来避免不必要的同步开销。您在方法内部初始化 wwwdf2 变量,但看起来它是一个我认为不需要的实例变量。在方法中声明它以使其范围更短。