gpt4 book ai didi

Java:查找文件的最后一行是否为空

转载 作者:行者123 更新时间:2023-12-04 15:26:13 25 4
gpt4 key购买 nike

我对需要用 Java 完成的学校作业有疑问。我需要从文件加载数据并检查这些文件中的错误。

我使用 bufferedReader 读取文件,它在文件末尾之前都能正常工作:如果该行为空,它会忽略最后一行。

我知道如何检查空行,但最后一行使用 bufferedReaderreadLine() 函数根本没有给出任何结果。

重要的是我知道最后一行是否为空,因为它必须是空的。如果空行不存在,它应该给出一个错误。

长话短说,我需要一种方法来区分以下情况(其中 CRLF 是行尾):

情况一(正确):

line x CRLF
line y CRLF

情况二(错误):

line x CRLF
line y

这两种情况都会在第 y 行之后的 readline() 上返回 null。

我正在计算文件的行数,所以如果我有一个行计数器(注意:那个计数器也必须计算那个空行,我找到的所有行都没有计算它们)

文件中也包含空行,如果这对我需要的代码有任何影响的话(这些行被正确检测到,因为它们应该是 EOF 不在这些行上)

请注意,该程序在有或没有最后一行的情况下都可以工作,这纯粹是作业告诉我如果不存在则给出错误。

最佳答案

如果您想确定最后一行是否有 CRLF,您可以从末尾开始阅读。

public static boolean lastLineisCRLF(String filename) {
RandomAccessFile raf = null;
try {
raf = new RandomAccessFile(filename, "r");
long pos = raf.length() - 2;
if (pos < 0) return false; // too short
raf.seek(pos);
return raf.read() == '\r' && raf.read() == '\n';
} catch (IOException e) {
return false;
} finally {
if (raf != null) try {
raf.close();
} catch (IOException ignored) {
}
}
}

关于Java:查找文件的最后一行是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14258704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com