大檔案讀取(超過記憶體)
阿新 • • 發佈:2018-12-30
package com.zyt.interview;
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.Charsets;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;
/**
* 大檔案讀取(超過記憶體大小)
* @author Administrator
*
*/
public class BigFileRead {
/**
* Scanner讀取
* @param path
* @throws IOException
*/
public static void readScanner(String path) throws IOException{
FileInputStream inputStream=null ;
Scanner scan=null;
try {
inputStream=new FileInputStream(path);
scan=new Scanner(inputStream, "UTF-8");
while(scan.hasNextLine()){
String line=scan.nextLine();
System.out.println(line);
}
if (scan!=null)
throw scan.ioException();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if (inputStream != null) {
inputStream.close();
}
if (scan != null) {
scan.close();
}
}
}
/**
* apache common io 讀取
* @param path
*/
public void readApacheCommon(String path){
LineIterator it=null;
try {
it = FileUtils.lineIterator(new File(path),Charsets.UTF_8.name());
while(it.hasNext()){
String line = it.nextLine();
System.out.println(line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
LineIterator.closeQuietly(it);
}
}
/**
* buffer讀取
*/
public void readBuffer(String path){
File file=new File(path);
try {
BufferedReader reader=new BufferedReader(new FileReader(file), 10*1024*1024);
String line=null;
while((line=reader.readLine())!=null){
System.out.println(line);
}
reader.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}