如何从java 8中的文本文件中读取特定行?

时间:2018-05-04 12:28:09

标签: java text-files filereader

因此,我需要逐行读取文本文件,并按字符串返回。我可以指定从哪一行到哪一行我想读它。

我的课有3种方法:

public class FilePartReader {

    String filePath;
    Integer fromLine;
    Integer toLine;

    public FilePartReader() { }

    public void setup(String filepath, Integer fromLine, Integer toLine) {
        if (fromLine < 0 || toLine <= fromLine) {
            throw new IllegalArgumentException(
                    "fromline cant be smaller than 0 and toline cant be smaller than fromline");
        }
        this.filePath = filepath;
        this.fromLine = fromLine;
        this.toLine = toLine;
    }

    public String read() throws IOException {
        String data;
        data = new String(Files.readAllBytes(Paths.get(filePath)));
        return data;
    }

    public String readLines() {
        return "todo";
    }
}

read()方法应该打开文件路径,并将内容作为字符串返回。 readLines()应该使用read()和读取文件  从fromLine和toLine之间返回它的内容(包括它们两者),并将这些行作为String返回。 现在,我不确定read()是否正确实现,因为如果我理解正确将整个内容作为一个大字符串返回,可能有更好的解决方案吗?另外,我如何使fromLine / toLine工作? 提前谢谢

1 个答案:

答案 0 :(得分:8)

您可以使用Files.lines返回Stream<String>所有行,并将skiplimit应用于结果流:

Stream<String> stream = Files.lines(Paths.get(fileName))
                             .skip(fromLine)
                             .limit(toLine - fromLine);

这将为您提供从Stream开始到fromLine结束的toLine行。之后,您可以将其转换为数据结构(例如列表)或做任何需要完成的事情。