Java 是否有从文件中读取前n行的实用方法?
我搜索了以下流行的图书馆:Java 是否有从文件中读取前n行的实用方法?,java,string,file,Java,String,File,我搜索了以下流行的图书馆: 番石榴-Fiels.readLines nio-Files.readFirstLine或Files.readAllLines ApacheComons-FileUtils.readLines 所有方法都将整个文件作为字符串集合读入内存。但这对包含数千行的大型文件不有用吗?是否有一个简单的方法调用来读取这些库中文件的第一行?对于Java 8,您可以使用: List readFirst(最终路径,最终整数行)引发IOException{ try(最终流行=Files.
- 番石榴-Fiels.readLines
- nio-Files.readFirstLine或Files.readAllLines
- ApacheComons-FileUtils.readLines
List readFirst(最终路径,最终整数行)引发IOException{
try(最终流行=Files.lines(路径)){
返回行.limit(numLines).collect(toList());
}
}
在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;
}
}
List readFirst(最终路径,最终整数行)引发IOException{
try(final BufferedReader=Files.newBufferedReader(路径,StandardCharsets.UTF_8)){
最终列表行=新的ArrayList(numLines);
int lineNum=0;
弦线;
while((line=reader.readLine())!=null&&lineNum
我不知道您想要的“就绪”实用程序,但它非常简单。首先创建BufferedReader
的实例:
BufferedReader=newBufferedReader(newFileReader(“myfile.txt”)
现在读第一行:
Stirng line = reder.readLine();
显然,您可以根据需要多次调用此方法来读取文件的n行,例如:
for (int i = 0; i < n; i++) {
Stirng line = reder.readLine();
// do whatever you want with the line
}
for(int i=0;i
您可以使用
LineNumberReader读取器=
新行号阅读器
(新的InputStreamReader(新文件InputStream(“/path/to/file”),“UTF-8”);
试一试{
弦线;
虽然(((line=reader.readLine())!=null)和&reader.getLineNumber()不能在我的系统上编译,但您需要在newbuffereder
方法调用中指定一个字符集。@owlstead很好-在Java 8中有一个默认使用UTF-8
的方法。是的,我猜得差不多:)请注意,您指定的Java 8方法也使用UTF-8作为默认字符集。这一问题的答案有点太快,代码中存在多个错误,并且忽略reder
的结果并不是一个很好的答案。使用默认字符集也可能不是一个好主意。LineNumberReader
-我总是忘记存在。+1可能一些番石榴或甲骨文的人正在阅读此问题并添加新方法?;)
for (int i = 0; i < n; i++) {
Stirng line = reder.readLine();
// do whatever you want with the line
}
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()
}