所以我试图使用android中的Buffered Reader读取大约40KB的文本文件。问题是文件中的一行(主要是最后一行)超过9000个字符,这很难存储在String中并进行记录。
我在下面尝试了这种方法,但是当字符超过时,它会放弃解析行中的其余部分。
try {
File root = android.os.Environment.getExternalStorageDirectory();
File file = new File (root.getAbsolutePath() + "/" + "new.txt");
BufferedReader r = null;
r = new BufferedReader(new FileReader(file));
StringBuilder total = new StringBuilder();
String line;
while((line = r.readLine()) != null) {
Log.e("Line",line);
total.append(line);
}
r.close();
} catch (Exception e) {
e.printStackTrace();
}
我认为将String line
更改为String line = new String(new byte[1024*1024])
可以解决我的问题。但是Android Studio强调了它作为还原剂代码。问题是我需要在while循环的每一行上应用一些正则表达式。
我可以使用任何解决方法吗?顺便说一下,这是我40 KB的文件链接https://www.dropbox.com/s/hp7vn6vt86adv6g/new.txt?dl=0
编辑:我要解析的文件是html文件。
已更新
我错了,该行中的字符串没有像skandigraun(根据评论)所建议的那样省略其余部分。 Logger没有打印整个字符串,因为它超过了4000个字符的限制,而我的字符串是8093个字符。
简而言之,上面的代码同样有效!