java - 如何在 reader.readLine() 期间检测第一行和最后一行?

标签 java file

我正在以下面的方式读取文件的每一行

BufferedReader in = new BufferedReader(new FileReader(inFile));

while (null != (line = in.readLine())) {


}

我想单独在第一行和最后一行做一些验证。有没有 检查它是否是 while 循环中的第一行和最后一行的方法

while (null != (line = in.readLine())) {    

    if(firstlineoffile) {
    }

    else if (lastlineoffile) {
    }

    else
    {
    }

}

最佳答案

很酷的问题。我玩了一下,这是一个 SSCCE , 只需复制'n'粘贴'然后'运行它。

package com.stackoverflow.q2292917;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;

public class Test {

    public static void main(String... args) throws IOException {
        // Create test file.
        File file = new File("/test.txt");
        PrintWriter writer = new PrintWriter(file);
        writer.println("line 1");
        writer.println("line 2");
        writer.println("line 3");
        writer.println("line 4");
        writer.println("line 5");
        writer.close();

        // Read test file.
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader(file));
            String next, line = reader.readLine();
            for (boolean first = true, last = (line == null); !last; first = false, line = next) {
                last = ((next = reader.readLine()) == null);

                if (first) {
                    System.out.println("first line: " + line);
                } else if (last) {
                    System.out.println("last line: " + line);
                } else {
                    System.out.println("normal line: " + line);
                }
            }
        } finally {
            if (reader != null) try { reader.close(); } catch (IOException logOrIgnore) {}
        }

        // Delete test file.
        file.delete();
    }

}

输出:

first line: line 1
normal line: line 2
normal line: line 3
normal line: line 4
last line: line 5

然而,我质疑初学者的可读性和可解释性...... ;)

关于java - 如何在 reader.readLine() 期间检测第一行和最后一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2292917/

相关文章:

Java 扫描器仅读取文件的第一行

java - 运行 batchlet 时无法创建工件

java - 如何使用 Maven 下载 jar 的源代码?

java - 使用堆栈在 java 中获取 infix/postfix 的错误输出

c++ - C++读取整个文件目录

java - jOOQ 中的 DISTINCT ON()

windows - 停止服务不释放其资源?

java - ClassLoader.getResource 不断为现有资源返回 null

c# - 如何将二进制数组转换为word格式并使用c#将其显示到textarea

c - 如何在c中动态分配结构数组?