如何使用Java逐行讀取大型文本文件?我需要使用Java逐行讀取5-6GB左右的大型文本文件。我怎么能這么快做呢?
4 回答

回首憶惘然
TA貢獻1847條經(jīng)驗 獲得超11個贊
try (BufferedReader br = new BufferedReader(new FileReader(file))) { String line; while ((line = br.readLine()) != null) { // process the line. }}
line
try(BufferedReader br = new BufferedReader(new FileReader(file))) { for(String line; (line = br.readLine()) != null; ) { // process the line. } // line is not visible here.}
try (Stream<String> stream = Files.lines(Paths.get(fileName))) { stream.forEach(System.out::println);}

富國滬深
TA貢獻1790條經(jīng)驗 獲得超9個贊
可以指定緩沖區(qū)大小,也可以使用默認大小。對于大多數(shù)用途,缺省值都足夠大。
//?Open?the?fileFileInputStream?fstream?=?new?FileInputStream("textfile.txt"); BufferedReader?br?=?new?BufferedReader(new?InputStreamReader(fstream));String?strLine; //Read?File?Line?By?Linewhile?((strLine?=?br.readLine())?!=?null)???{ ??//?Print?the?content?on?the?console ??System.out.println?(strLine);}//Close?the?input?streamfstream.close();

汪汪一只貓
TA貢獻1898條經(jīng)驗 獲得超8個贊
try (Stream<String> lines = Files.lines(Paths.get(filename), Charset.defaultCharset())) { lines.forEachOrdered(line -> process(line));}
try (Stream<String> lines = Files.lines(file, Charset.defaultCharset())) { lines.forEachOrdered(System.out::println);}

有只小跳蛙
TA貢獻1824條經(jīng)驗 獲得超8個贊
InputStream ins = null; // raw byte-streamReader r = null; // cooked readerBufferedReader br = null; // buffered for readLine()try { String s; ins = new FileInputStream("textfile.txt"); r = new InputStreamReader(ins, "UTF-8"); // leave charset out for default br = new BufferedReader(r); while ((s = br.readLine()) != null) { System.out.println(s); }}catch (Exception e){ System.err.println(e.getMessage()); // handle exception}finally { if (br != null) { try { br.close(); } catch(Throwable t) { /* ensure close happens */ } } if (r != null) { try { r.close(); } catch(Throwable t) { /* ensure close happens */ } } if (ins != null) { try { ins.close(); } catch(Throwable t) { /* ensure close happens */ } }}
File f = new File("textfile.txt");f.withReader("UTF-8") { br -> br.eachLine { line -> println line; }}
添加回答
舉報
0/150
提交
取消