• 读取大文件性能测试


    读取大文件的方法这里有三种,

    第一种,使用commons-io的FileUtils的类进行读取

    第二种,使用Scanner进行读取

    第三种,使用cache进行读取

    读取文件大小:102M

    使用commons-io的FileUtils类进行读取

    public static void testReadFile() {
            try {
                LineIterator lineIterator = FileUtils.lineIterator(new File("D:/test.log"), "UTF-8");
                while (lineIterator.hasNext()) {
                    String line = lineIterator.nextLine();
                    System.out.println(line);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    读取时间在8秒左右

    使用Scanner进行读取:

    public static void testScannerReadFile() {
            FileInputStream fileInputStream = null;
            Scanner scanner = null;
            try {
                fileInputStream = new FileInputStream("D:/test.log");
                scanner = new Scanner(fileInputStream, "UTF-8");
                while (scanner.hasNext()) {
                    String line = scanner.nextLine();
                    System.out.println(line);
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } finally {
                if (fileInputStream != null) {
                    try {
                        fileInputStream.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (scanner != null) {
                    scanner.close();
                }
            }
    
        }

    读取时间在10秒左右

    使用cache读取

    public static void readCache() {
            String filename = "D:/test.log";
            File file = new File(filename);
    
            BufferedReader reader = null;
            try {
                reader = new BufferedReader(new FileReader(file), 10 * 1024 * 1024);   //读大文件 设置缓存
                String tempString = null;
                while ((tempString = reader.readLine()) != null) {
                    System.out.println(tempString);
                }
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (reader != null) {
                    try {
                        reader.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
    
            }
        }

    读取时间在8秒左右,与commons-io的FileUtils不相上下,我这边暂时没有更大的文件进行比较如果,有更大的文件,欢迎进行测试比较。

  • 相关阅读:
    转:Caused by: java.lang.NoSuchMethodError: org.apache.log4j.Category.log
    maven安装
    eclipse安装插件
    java.lang.ClassNotFoundException: com.*.listener.ConfigInfoReader
    oracle
    myeclipse中文乱码,JSP页面乱码
    ansible 列表变量、字典变量
    python模块
    python函数
    python数据类型2
  • 原文地址:https://www.cnblogs.com/tangkai/p/4834688.html
Copyright © 2020-2023  润新知