1

我有一个java创建文本文件的程序,如下所示:

FileWriter fstream = new FileWriter(filename + ".txt");
BufferedWriter outwriter = new BufferedWriter(fstream);

我通过使用向文件添加行

outwriter.write("line to be added");

现在在程序的某些阶段,我需要知道我在文本文件中添加了多少行,而文件仍然有等待添加的行。

这整个过程就是添加一些页脚和页眉。

有什么方法可以找到当前最后添加的行号吗?

编辑

添加 afunction或 acounter添加行是一种解决方案,但时间限制不允许我这样做。当我正在处理地狱时,LOC这将在很多地方发生重大变化,这将消耗大量时间。

4

5 回答 5

2

看看Apache Commons Tailer

它将执行类似的操作并在将行添加到文件时为每一行tail回叫您(通过TailListener )。然后,您可以在回调中保持您的计数。您不必担心编写文件读取/解析代码等。

于 2013-07-03T08:38:16.910 回答
1

当然。只需实现您自己的作家,例如LineCountWriter extends Writer包装其他Buffered并计算书面行数。

于 2013-07-03T08:38:41.390 回答
0

制作一个将行写入文件的方法

private static int lineCount;
private static void fileWriter(BufferedWriter outwriter, String line)
{
    outwriter.write(line);
    lineCount++;
}

现在每次需要向文件写入一行时,只需调用此方法即可。并且在任何时候您都需要知道行数,然后lineCount变量会引起关注。

希望这可以帮助!

于 2013-07-03T08:39:00.510 回答
0

做一个计数器:

lineCounter+="line to be added".split("\n").length-1
于 2013-07-03T08:37:45.697 回答
0

创建一个这样的方法:

public int writeLine(BufferedWriter out, String message, int numberOfLines) {
    out.write(message);
    return numberOfLines++;
}

然后你可以这样做:

int totalLines = 0;
totalLines = writeLine("Line to be added", outwriter, totalLines);

System.out.println("Total lines: " + totalLines);

> "Total lines: 1"
于 2013-07-03T08:39:33.890 回答