Java读取大文件方法

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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

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

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

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

SELECTLEVEL||'|'||'张'||LEVEL||'|'||(13900000000+LEVEL)FROMDUAL CONNECTBYLEVEL<1000000;

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

实现如下:

packagecom.test.common.util;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.IOException;importjava.util.Scanner;importorg.apache.commons.io.FileUtils;importorg.apache.commons.io.LineIterator;publicclassHandleTextFile {//使用commons-io.jar包的FileUtils的类进行读取publicstaticvoidreadTxtFileByFileUtils(String fileName) {

File file=newFile(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进行读取publicstaticvoidreadTxtByScanner(String fileName) {

FileInputStream fileInputStream=null;

Scanner scanner=null;try{

fileInputStream=newFileInputStream(fileName);

scanner=newScanner(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进行读取publicstaticvoidreadTxtByStringBuffer(String fileName)throwsIOException {

File file=newFile(fileName);

BufferedReader reader=null;try{

reader=newBufferedReader(newFileReader(file), 10 * 1024 * 1024);

String stringMsg=null;while((stringMsg = reader.readLine()) !=null) {

System.out.println(stringMsg);

}

reader.close();

}catch(FileNotFoundException e) {

e.printStackTrace();

}

}publicstaticvoidmain(String[] args) {try{

HandleTextFile.readTxtByStringBuffer("D:\\test\\customer_info.txt");

}catch(IOException e) {

e.printStackTrace();

}

}

}

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

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航