我目前遇到阅读使用java 1.4的相对较大文本文件的问题。阅读大文本文件
我想读取每行有100个字符的文本文件,并且该文件可以达到100万行或更多行。
当前我正在使用BufferedReader和filereader方法来逐行读取文件进行处理,但是我的应用程序服务器在一段时间后总是挂在我身上。有没有更好的方法来读取文件并处理到我的数据库?
谢谢
我目前遇到阅读使用java 1.4的相对较大文本文件的问题。阅读大文本文件
我想读取每行有100个字符的文本文件,并且该文件可以达到100万行或更多行。
当前我正在使用BufferedReader和filereader方法来逐行读取文件进行处理,但是我的应用程序服务器在一段时间后总是挂在我身上。有没有更好的方法来读取文件并处理到我的数据库?
谢谢
首先,如果可能的话,我不会使用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.
感谢您的帮助。我也不想使用Java 1.4,因为我别无选择,决定也不是由我做出的。 –
感谢您的帮助。我也不想使用Java 1.4,因为我别无选择,决定也不是由我做出的。无论如何,你有任何想法如何我通过块加载数据? –
@PuriKoh,如果你不喜欢我给的例子,你能说出你想要的不同吗? –
为什么不在块中读取文件并处理该块(由块处理块)。 :) –
为什么你不使用线程? – midhunhk
对不起,我对Java很好。我想知道如何阅读第一个1000行和过程。之后,我继续阅读下一个1000行 –