1. 程式人生 > >大檔案讀取(超過記憶體)

大檔案讀取(超過記憶體)

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(); } } }