Самый быстрый способ прочитать строку строки по строке с двумя наборами строк в каждой строке?
Каков самый быстрый способ, который я могу читать по строкам с каждой строкой, содержащей две строки.
Пример входного файла:
Fastest, Way
To, Read
One, File
Line, By Line
.... can be a large file
В каждой строке всегда есть два набора строк, даже если между строкой есть пробелы, например. "По линии"
В настоящее время я использую
FileReader a = new FileReader(file);
BufferedReader br = new BufferedReader(a);
String line;
line = br.readLine();
long b = System.currentTimeMillis();
while(line != null){
Является ли это достаточно эффективным или есть более эффективный способ использования стандартного JAVA API (без внешних библиотек, пожалуйста) Любая помощь приветствуется Спасибо!
Ответы
Ответ 1
Это зависит от того, что вы имеете в виду, когда говорите "эффективный". С точки зрения производительности это нормально. Если вы спрашиваете о стиле и размере кода, я делаю это практически с небольшой коррекцией:
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while((line = br.readLine()) != null) {
// do something with line.
}
Для чтения из STDIN Java 6 предлагает вам еще один способ. Используйте класс Console и его методы
readLine()
а также
readLine(fmt, Object... args)
Ответ 2
import java.util.*;
import java.io.*;
public class Netik {
/* File text is
* this, is
* a, test,
* of, the
* scanner, I
* wrote, for
* Netik, on
* Stack, Overflow
*/
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(new File("test.txt"));
sc.useDelimiter("(\\s|,)"); // this means whitespace or comma
while(sc.hasNext()) {
String next = sc.next();
if(next.length() > 0)
System.out.println(next);
}
}
}
Результат:
C:\Documents and Settings\glowcoder\My Documents>java Netik
this
is
a
test
of
the
scanner
I
wrote
for
Netik
on
Stack
Overflow
C:\Documents and Settings\glowcoder\My Documents>
Ответ 3
Если вы хотите разделить два набора String, вы можете сделать это следующим образом:
BufferedReader in = new BufferedReader(new FileReader(file));
String str;
while ((str = in.readLine()) != null) {
String[] strArr = str.split(",");
System.out.println(strArr[0] + " " + strArr[1]);
}
in.close();