阅读大文本文件

时间:2011-07-01 10:02:42

标签: java

我目前在使用java 1.4阅读相对较大的文本文件时遇到问题。

我正在尝试读取每行100个字符的文本文件,该文件最多可达100万行或更多行。

目前我正在使用带有文件阅读器方法的BufferedReader来逐行读取文件进行处理,但我的应用服务器总是在一段时间后挂在我身上。有没有更好的方法来读取文件并处理到我的数据库?

感谢

1 个答案:

答案 0 :(得分:1)

首先,如果可能的话,我不会使用Java 1.4。例如如果您正在为Blackberry编写代码,则别无选择。 Java 5.0于7年前发布,甚至终结为免费支持。最新版本是Java 6 update 26。

读取100 MB的文本不应该花很长时间,我应该花费超过5秒。如果你运行缓慢,很可能你的内存不足。在Java 6之前,内存不足可能导致系统运行速度变慢而不是失败。

如果您需要将数据加载到数据库中,我建议您一次加载适度的数据部分。这样您就可以像第一行一样快地加载最后一行。

如果要将一百万个条目加载到数据库中,则需要检查数据库的速度。一次加载批次,您可以在两分钟内插入每秒10K条记录和一百万条记录。但是,配置不当的服务器一次添加一行,每秒只能执行100条记录,耗时3.5小时。

假设您希望每1000行处理一些数据。

List<String> lines = new ArrayList<String>();
String line;
while((line = br.readLine()) != null) {
    lines.add(line);
    if(lines.size() >= 1000) {
       process(lines);
       lines.clear();
    }
}
process(lines); // get the last lines.