我搜索了以下受欢迎的库:
所有方法都将整个文件作为String集合读入内存.但这对于拥有数千行的大型文件没有用处?是否有一个简单的方法调用来读取n任何这些库中的文件的第一行?
使用 Java 8,您可以使用Files.lines:
List<String> readFirst(final Path path, final int numLines) throws IOException {
try (final Stream<String> lines = Files.lines(path)) {
return lines.limit(numLines).collect(toList());
}
}
Run Code Online (Sandbox Code Playgroud)
在 Java 8 之前,您可以很容易地自己编写一些东西:
List<String> readFirst(final Path path, final int numLines) throws IOException {
try (final BufferedReader reader = Files.newBufferedReader(path, StandardCharsets.UTF_8)) {
final List<String> lines = new ArrayList<>(numLines);
int lineNum = 0;
String line;
while ((line = reader.readLine()) != null && lineNum < numLines) {
lines.add(line);
lineNum++;
}
return lines;
}
}
Run Code Online (Sandbox Code Playgroud)
你可以用 LineNumberReader
LineNumberReader reader =
new LineNumberReader
(new InputStreamReader(new FileInputStream("/path/to/file"), "UTF-8"));
try{
String line;
while (((line = reader.readLine()) != null) && reader.getLineNumber() <= 10) {
...
}
}finally{
reader.close()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2092 次 |
| 最近记录: |