计算文本文件中仍在写入时的行数

时间:2013-07-03 08:34:18

标签: java text line-numbers

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

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

我使用

在文件中添加了一行
outwriter.write("line to be added");

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

整个过程是添加一些页脚和标题。

是否有任何方法可以找到当前上次添加行号?

  

修改

添加functioncounter来添加行是一种解决方案,但时间限制不允许我这样做。当我处理LOC时,这将是很多地方的一个重大变化,它将耗费大量时间。

5 个答案:

答案 0 :(得分:2)

看看Apache Commons Tailer

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

答案 1 :(得分:0)

制作一个柜台:

lineCounter+="line to be added".split("\n").length-1

答案 2 :(得分:0)

不确定。只需实现自己的作家,例如LineCountWriter extends Writer包裹其他Buffered并计算书写行。

答案 3 :(得分:0)

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

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

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

希望这有帮助!

答案 4 :(得分: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"