当前位置: 首页 > 面试题库 >

Java读取200万行文本文件的最快方法

束志业
2023-03-14
问题内容

目前,我正在使用扫描仪/文件阅读器,同时使用hasnextline。我认为这种方法效率不高。还有其他方法可以读取与此功能类似的文件吗?

public void Read(String file) {
        Scanner sc = null;


        try {
            sc = new Scanner(new FileReader(file));

            while (sc.hasNextLine()) {
                String text = sc.nextLine();
                String[] file_Array = text.split(" ", 3);

                if (file_Array[0].equalsIgnoreCase("case")) {
                    //do something
                } else if (file_Array[0].equalsIgnoreCase("object")) {
                    //do something
                } else if (file_Array[0].equalsIgnoreCase("classes")) {
                    //do something
                } else if (file_Array[0].equalsIgnoreCase("function")) {
                    //do something
                } 
                else if (file_Array[0].equalsIgnoreCase("ignore")) {
                    //do something
                }
                else if (file_Array[0].equalsIgnoreCase("display")) {
                    //do something
                }
            }

        } catch (FileNotFoundException e) {
            System.out.println("Input file " + file + " not found");
            System.exit(1);
        } finally {
            sc.close();
        }
    }

问题答案:

您会发现这BufferedReader.readLine()是所需的速度:您可以每秒读取数百万行。字符串拆分和处理很可能导致遇到的任何性能问题。



 类似资料:
  • 目前我正在使用扫描器/文件读取器,并使用while HasNextLine。我认为这种方法效率不高。有没有其他方法读取文件与此类似的功能?

  • 问题内容: 我有一个包含7000万行文本的大型测试文件。我必须逐行阅读文件。 我使用了两种不同的方法: 和 是否有另一种方法可以使此任务更快? 最好的祝福, 问题答案: 1)我确定速度没有差异,两者都在内部使用FileInputStream和缓冲 2)您可以进行测量并亲自查看 3)虽然没有性能优势,但我喜欢1.7方法 4)基于扫描仪的版本 5)这可能比其余的更快 它需要一些编码,但是由于,它确实可

  • 问题内容: 从Java中的[非常大]文件中读取文本的最后一行的最快,最有效的方法是什么? 问题答案: 以下是两个函数,一个函数返回文件的最后一个非空白行而不加载或单步浏览整个文件,另一个函数返回文件的最后N行而不单步浏览整个文件: 尾部的作用是直接缩放到文件的最后一个字符,然后逐个字符向后退一步,记录所看到的内容,直到找到换行符为止。找到换行符后,便会跳出循环。反转记录的内容,并将其放入字符串中并

  • 问题内容: 我一直在寻找最快的方法来用有限的内存(大约64MB)在Java中再次读写大文件(0.5-1 GB),这是最快的方法。文件中的每一行代表一条记录,因此我需要逐行获取它们。该文件是普通文本文件。 我尝试了BufferedReader和BufferedWriter,但这似乎不是最好的选择。读写大小为0.5 GB的文件大约需要35秒钟,仅进行读写操作而不进行任何处理。我认为这里是写作的瓶颈,因

  • 问题内容: 当给定一个MAX_BUFFER_SIZE的缓冲区以及一个远远超过该缓冲区的文件时,怎么办: 以MAX_BUFFER_SIZE的块读取文件? 尽快完成 我尝试使用NIO 和常规IO 事实证明, 常规IO在执行与NIO相同的操作时快约100倍 。我想念什么吗?这是预期的吗?有没有更快的方法来读取缓冲区块中的文件? 最终,我正在处理一个大文件,但我没有足够的内存来一次读取所有文件。相反,我想

  • 测试数据 # linecache_data.py import os import tempfile lorem = '''Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus eget elit. In posuere mi non risus. Mauris id quam posuere lectus soll