Java 8 无法使用流java读取1600行以上的文件?

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<

我正在使用stream读取一个有5000行的大文件

  • 我必须跳过行,因为我想显示最近的行
  • 若用户在参数中通过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())
,并查看它是否生成正确的结果。