首页 > 学院 > 开发设计 > 正文

Java读取大文件方法

2019-11-14 15:29:45
字体:
来源:转载
供稿:网友

需求:实际开发中读取文本文件的需求还是很多,如读取两个系统之间FTP发送文件,读取后保存到数据库中或日志文件的数据库中保存等。

 

为了测试首先利用数据库SQL生成大数据文件。

规则是 编号|姓名|手机号,如 10|张10|13900000010

利用下面语句可以生成1,000,000条数据。生成的数据保存到 D://test//customer_info.txt 文件里面。

SELECT LEVEL||'|'||''||LEVEL||'|'||(13900000000+LEVEL)  FROM DUAL CONNECT BY LEVEL < 1000000;

利用java程序读取刚生成的文件。 

实现如下:

package com.test.common.util;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.util.Scanner;import org.apache.commons.io.FileUtils;import org.apache.commons.io.LineIterator;public class HandleTextFile {        // 使用commons-io.jar包的FileUtils的类进行读取    public static void readTxtFileByFileUtils(String fileName) {        File file = new File(fileName);        try {            LineIterator lineIterator = FileUtils.lineIterator(file, "UTF-8");            while (lineIterator.hasNext()) {                String line = lineIterator.nextLine();                System.out.PRintln(line);            }        } catch (IOException e) {            e.printStackTrace();        }    }        // 使用Scanner进行读取    public static void readTxtByScanner(String fileName) {        FileInputStream fileInputStream = null;         Scanner scanner = null;                try {            fileInputStream = new FileInputStream(fileName);            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();            }        }            }    // 使用cache进行读取    public static void readTxtByStringBuffer(String fileName) throws IOException {        File file = new File(fileName);                BufferedReader reader = null;                try {            reader = new BufferedReader(new FileReader(file), 10 * 1024 * 1024);            String stringMsg = null;            while ((stringMsg = reader.readLine()) != null) {                System.out.println(stringMsg);            }            reader.close();        } catch (FileNotFoundException e) {            e.printStackTrace();        }     }        public static void main(String[] args) {        try {            HandleTextFile.readTxtByStringBuffer("D://test//customer_info.txt");        } catch (IOException e) {            e.printStackTrace();        }    }}

 参考文件:读取大文件性能测试


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表