Java 8 无法使用流java读取1600行以上的文件?
我正在使用stream读取一个有5000行的大文件Java 8 无法使用流java读取1600行以上的文件?,java-8,java-stream,filereader,Java 8,Java Stream,Filereader,我正在使用stream读取一个有5000行的大文件 我必须跳过行,因为我想显示最近的行 若用户在参数中通过100,那个么他将看到最后100行 我的代码: public static void readFile(String filePath, long lineNum) { List<String> list = new ArrayList<>(); long totalLines, startLine = 0; try (Stream<
- 我必须跳过行,因为我想显示最近的行李>
- 若用户在参数中通过100,那个么他将看到最后100行李>
public static void readFile(String filePath, long lineNum) {
List<String> list = new ArrayList<>();
long totalLines, startLine = 0;
try (Stream<String> lines = Files.lines(Paths.get(filePath))) {
totalLines = Files.lines(Paths.get(filePath)).count();
startLine = totalLines - lineNum;
// Stream<String> line32 = lines.skip(((startLine)+1));
list = lines.skip(startLine + 1).collect(Collectors.toList());
// lines.forEach(list::add);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
list.forEach(System.out::println);
}
publicstaticvoidreadfile(stringfilepath,longlinenum){
列表=新的ArrayList();
长总线,短线=0;
try(streamlines=Files.lines(path.get(filePath))){
totalines=Files.lines(path.get(filePath)).count();
startLine=totalLines-lineNum;
//Stream line32=行。跳过(((行)+1));
list=lines.skip(startLine+1).collect(Collectors.toList());
//lines.forEach(列表::add);
}捕获(IOE1异常){
//TODO自动生成的捕捉块
e1.printStackTrace();
}
list.forEach(System.out::println);
}
我已经用其他文件检查过了,但也遇到了同样的问题。**如果我没有使用skip,只是读取流,那么它也不会打印文件的全部内容**我尝试过用/usr/share/dict/words编写代码(在我的系统中是99171行,对我来说效果很好(返回最后100行)。你使用哪种JRE/JDK?如果Totalines
包含正确的数字,则至少在所有行上迭代一次。不是说你不关闭第二个流,但它不应该有这样的影响。1.2_121 JDK
hmm,在我看来很奇怪,java-version
说了什么?@NeelaySolanki请尝试减少你的测试CAe到Files.line(path.get(“/usr/share/dict/words”)).skip(100.collect(Collectors.toList())
,看看它是否产生了正确的结果。我已经用其他文件检查了它,但也遇到了同样的问题。**如果我没有使用skip,只是读取流,那么它也不会打印文件的全部内容**我尝试过用/usr/share/dict/words编写代码(在我的系统上有99171行,对我来说很好)(返回最后100行)。你使用哪种JRE/JDK?如果Totalines
包含正确的数字,则至少在所有行上迭代一次。不是说你不关闭第二个流,但它不应该有这样的影响。1.2_121 JDK
hmm,在我看来很奇怪,java-version
说了什么?@NeelaySolanki请尝试减少你的测试CAe到文件.line(path.get(“/usr/share/dict/words”)).skip(100).collect(Collectors.toList())
,并查看它是否生成正确的结果。