gpt4 book ai didi

java - 如何计算空行的位置?

转载 作者:行者123 更新时间:2023-12-01 13:10:39 24 4
gpt4 key购买 nike

我有这样的平面文件:

[Doc]
Date=14.01.15
Symbol=MUKA
[Content]
[Pos1]
Name=Muka2,0 0,9L ML

[Doc]
Date=14.01.15
Symbol=MUKA
[Content]

[Doc]
Date=14.01.15
Symbol=MUKA
[Content]
[Pos1]
Name=Muka2,0 0,9L ML

我想删除内容为空的[Doc]语句。我试图通过检查该行是否有字符串“[Content]”来做到这一点,然后下一行是空的。然后我想获取行数(“[Content]”之后行为空的行数),然后将其添加到列表中。 [Content] 部分为空的 [Doc] 始终有 4 行。因此,当我获得 [Content] 位置时,我可以从中减去 4 并删除位置和位置 -4 之间的行。

执行后的文件必须如下所示:

[Doc]
Date=14.01.15
Symbol=MUKA
[Content]
[Pos1]
Name=Muka2,0 0,9L ML

[Doc]
Date=14.01.15
Symbol=MUKA
[Content]
[Pos1]
Name=Muka2,0 0,9L ML

我正在尝试使用函数来做到这一点:

public void countDesiredLines() throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(
"D:\\Temp.txt"));

int lines = 0;

boolean zawiera = false;
while (reader.readLine() != null) {
lines++;
String line = reader.readLine();
if (zawiera == true) {
zawiera = false;
if ("".equals(line)) {
pozycje.add(lines);

}
}
if (line.startsWith("[Content]")) {
zawiera = true;

}

reader.close();

System.out.println("Wartość pod: " + pozycje.size());
// for (int i = 0; i < pozycje.size(); i++) {
// System.out.println("Wartość pod: "+ pozycje.get(i).toString());
// }
}
}

我遇到了如下错误:

Wartość pod: 0
java.io.IOException: Stream closed
at java.io.BufferedReader.ensureOpen(BufferedReader.java:115)
at java.io.BufferedReader.readLine(BufferedReader.java:310)
at java.io.BufferedReader.readLine(BufferedReader.java:382)
at TextFormatter.countDesiredLines(TextFormatter.java:190)
at TextFormatter.main(TextFormatter.java:51)

我是java新手。如果您有任何线索或建议,请告诉我。谢谢你的时间。

最佳答案

每次迭代您都会调用 readLine() 两次,因此您将读到文件末尾。更改:

while (reader.readLine() != null) {
lines++;
String line = reader.readLine();

String line = null;
while ((line = reader.readLine()) != null) {
lines++;

此外,您正在循环内调用 reader.close()。您必须将其移至循环之外才能使您的逻辑正常工作。

关于java - 如何计算空行的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22894687/

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