2011-07-01 236 views
3

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

我想读取每行有100个字符的文本文件,并且该文件可以达到100万行或更多行。

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

谢谢

+1

为什么不在块中读取文件并处理该块(由块处理块)。 :) –

+0

为什么你不使用线程? – midhunhk

+0

对不起,我对Java很好。我想知道如何阅读第一个1000行和过程。之后,我继续阅读下一个1000行 –

回答

0

首先,如果可能的话,我不会使用Java 1.4。例如如果你正在编写黑莓的代码,你别无选择。 Java 5.0在7年前发布,甚至是免费支持的End Of Life。最新版本是Java 6 update 26.

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

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

如果您要将一百万个条目加载到数据库中,则需要检查数据库的速度。一次加载批次可以在两分钟内插入10K条记录和100万条记录。然而,一次只添加一行的配置不良的服务器每秒只能执行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. 
+0

感谢您的帮助。我也不想使用Java 1.4,因为我别无选择,决定也不是由我做出的。 –

+0

感谢您的帮助。我也不想使用Java 1.4,因为我别无选择,决定也不是由我做出的。无论如何,你有任何想法如何我通过块加载数据? –

+0

@PuriKoh,如果你不喜欢我给的例子,你能说出你想要的不同吗? –