zoukankan      html  css  js  c++  java
  • 读取大文件性能测试

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

    第一种,使用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不相上下,我这边暂时没有更大的文件进行比较如果,有更大的文件,欢迎进行测试比较。

  • 相关阅读:
    【卡西欧Fx-5800p系列教程】Pol()和Rec()正反算妙用
    《关于2013年全国测量人员最低工资标准的通知》
    易语言测量编程工具教程篇
    价值300元的《测量宝典》
    业界常用的和不常用cad快捷键
    角度格式批量转化弧度—易语言
    Web.config中 mode="RemoteOnly" 跟mode="On" 区别
    Oracle 批量修改某个用户下表的表空间
    JQuery radio单选框应用
    RadioButtonFor控件
  • 原文地址:https://www.cnblogs.com/tangkai/p/4834688.html
Copyright © 2011-2022 走看看