Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 读取大型文本文件_Java - Fatal编程技术网

Java 读取大型文本文件

Java 读取大型文本文件,java,Java,我目前在使用Java1.4读取相对较大的文本文件时遇到了一个问题 我试图读取一个文本文件,每行100个字符,该文件最多可以有100万行或更多行 目前,我使用BufferedReader和filereader方法逐行读取文件进行处理,但我的应用程序服务器总是在一段时间后挂起。有没有更好的方法读取文件并处理到我的数据库中 首先,如果可能的话,我不会使用Java1.4。e、 如果你正在为黑莓手机编写代码,你别无选择。Java 5.0是7年前发布的,即使它是免费支持的终结。最新版本是Java6Updat

我目前在使用Java1.4读取相对较大的文本文件时遇到了一个问题

我试图读取一个文本文件,每行100个字符,该文件最多可以有100万行或更多行

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


首先,如果可能的话,我不会使用Java1.4。e、 如果你正在为黑莓手机编写代码,你别无选择。Java 5.0是7年前发布的,即使它是免费支持的终结。最新版本是Java6Update26

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

如果需要将数据加载到数据库中,我建议您一次加载少量数据。这样,您将以与第一行相同的速度加载最后一行

如果要将一百万个条目加载到数据库中,则需要检查数据库的速度。一次加载批处理您可能能够每秒插入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.
List line=new ArrayList();
弦线;
而((line=br.readLine())!=null){
行。添加(行);
如果(lines.size()>=1000){
工艺(生产线);
行。清除();
}
}
工艺(生产线);//拿到最后一行。

为什么不在块中读取文件并处理该块(逐块处理)。:)对不起,我对java很好。我想知道如何阅读前1000行和流程。之后,我继续阅读下一个1000行,我将尝试以块的形式读取文件,然后在另一个线程中处理该块。在处理上一个区块时,您可以继续执行i/o。感谢您的帮助。我也不希望使用java 1.4,因为我没有选择,而且决定权也不是我自己。谢谢你的帮助。我也不希望使用Java1.4,因为我没有选择,决定也不是我自己做的。不管怎样,你知道如何按块加载数据吗?@PuriKoh,如果你不喜欢我给出的示例,你能说出你想要什么不同吗?