我需要使用Java逐行读取大约5-6 GB的大型文本文件。
我怎样才能快速做到呢?
我需要使用Java逐行读取大约5-6 GB的大型文本文件。
我怎样才能快速做到呢?
当前回答
你可以使用流更精确地做到这一点:
Files.lines(Paths.get("input.txt")).forEach(s -> stringBuffer.append(s);
其他回答
你可以使用Scanner类
Scanner sc=new Scanner(file);
sc.nextLine();
我的阅读习惯通常很简单:
void readResource(InputStream source) throws IOException {
BufferedReader stream = null;
try {
stream = new BufferedReader(new InputStreamReader(source));
while (true) {
String line = stream.readLine();
if(line == null) {
break;
}
//process line
System.out.println(line)
}
} finally {
closeQuiet(stream);
}
}
static void closeQuiet(Closeable closeable) {
if (closeable != null) {
try {
closeable.close();
} catch (IOException ignore) {
}
}
}
您需要在BufferedReader类中使用readLine()方法。 从该类创建一个新对象,并对他操作此方法,并将其保存为字符串。
BufferReader Javadoc
你可以使用流更精确地做到这一点:
Files.lines(Paths.get("input.txt")).forEach(s -> stringBuffer.append(s);
FileReader不会让你指定编码,如果你需要指定它,使用inputstreamreader代替:
try {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "Cp1252"));
String line;
while ((line = br.readLine()) != null) {
// process the line.
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
如果从Windows导入该文件,它可能具有ANSI编码(Cp1252),因此必须指定编码。