Java - 只读取文件的第一行

Doc*_*day 6 java

我只想读取文本文件的第一行,并将第一行放在字符串数组中.

这是我所拥有的,但它读取整个文件.

myTextFile中的ex文本:

Header1,Header2,Header3,Header4,Header5
1,2,3,4,5
6,7,8,9,10





String line= System.getProperty("line.separator");
String strArray[] = new String[5];


String text = null;
BufferedReader brTest = new BufferedReader(new FileReader(myTextFile));
    text = brTest .readLine();
        while (text != line) {
            System.out.println("text = " + text );
             strArray= text.split(",");
         }
Run Code Online (Sandbox Code Playgroud)

Ell*_*sch 14

如果我了解你,那么

String text = brTest.readLine();
// Stop. text is the first line.
System.out.println(text);
String[] strArray = text.split(",");
System.out.println(Arrays.toString(strArray));
Run Code Online (Sandbox Code Playgroud)


bum*_*paw 13

BufferedReader.readLine() 获得的第一行.

BufferedReader brTest = new BufferedReader(new FileReader(myTextFile));
    text = brTest .readLine();
   System.out.println("Firstline is : " + text);
Run Code Online (Sandbox Code Playgroud)

  • 并添加 brTest.close() 或更好地使用 Java 8 的 try (BufferedReader...) { } 构造。 (2认同)

feo*_*eob 7

使用 Java 8,java.nio您还可以执行以下操作:

String myTextFile = "path/to/your/file.txt";
Path myPath = Paths.get(myTextFile);
String[] strArray = Files.lines(myPath)
    .map(s -> s.split(","))
    .findFirst()
    .get();
Run Code Online (Sandbox Code Playgroud)

如果TAsks假设是正确的,您可以通过额外的

.filter(s -> !s.equals(""))
Run Code Online (Sandbox Code Playgroud)

  • 注意: Files.lines 不会自动关闭文件。 (3认同)
  • 它实际上会将所有内容加载到内存中吗? (3认同)
  • @Yeung,是的,它将加载完整的文件作为流。从文档中:“将文件中的所有行作为流读取。文件中的字节使用 UTF-8 字符集解码为字符。” 如果您将处理中型大文件,最好使用 bufferedReader 解决方案 (2认同)