【问题标题】:How can I get a specific line from a text file? [duplicate]如何从文本文件中获取特定行? [复制]
【发布时间】:2015-04-14 21:03:41
【问题描述】:

我不知道如何从文件中获取特定的文本行。假设文本文件是:

(1) john
(2) mark
(3) Luke

如何获取文本文件的第二行(标记)?我只需要阅读它,而不是编辑它。

【问题讨论】:

  • 这已经回答了好几次了:here 和 here
  • @Stk,您是要获取包​​含“mark”的行还是仅获取第二行?
  • 我试图获得一个行号,例如包含标记的第二行。我不是在找那个人,只是想打印出特定行号上写的内容。所以如果我想查看第 2 行的内容,我会输入 2,它会打印出标记

标签: java formatting


【解决方案1】:
int n = 2;
String lineN = Files.lines(Paths.get("yourFile.txt"))
                    .skip(n)
                    .findFirst()
                    .get();

对于 Java 8 之前的版本,您可以这样做

int n = 2;
Scanner s = new Scanner(new File("test.txt"));
for (int i = 0; i < n-1; i++) // Discard n-1 lines
    s.nextLine();
String lineN = s.nextLine();

【讨论】:

  • 什么是“行”?
  • lines(...) 用于从给定文件中获取行流(很有用,因为您对第二个 行 感兴趣)。
  • 我知道要为你的文件放什么,但我必须更改文件、行和路径以匹配我所拥有的吗?
  • 不,您只需将"yourFile.txt"更改为您的文件路径。如果您使用的是相对路径,请注意您当前的工作目录。
  • 行有问题,因为 java 说方法行对于类型文件是未定义的
【解决方案2】:

如果不先阅读前几行,就无法阅读特定的行。您可以循环 x 次,直到到达您想要的行。

例如:

FileReader fr = new FileReader("myfile.txt");
BufferedReader br = new BufferedReader(fr);
int lineNum = 2; //line of file to read
for(int i = 1; i < lineNum; i++)
     br.readLine();
System.out.println(br.readLine());

【讨论】:

    【解决方案3】:

    您可以使用 Apache FileUtils 类

    File file = new File("file_name.txt");
    String encoding = null; // default to platform
    List<String> lines = FileUtils.readLines(file, encoding);
    String line2 = lines.get(1);
    

    【讨论】:

    • 看来findInLine只扫描当前行,所以如果mark不在第一行就会失败。
    猜你喜欢
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多