5

我想知道是否已经存在用于实现部分/全部 *NIX 尾部的 util 代码。我想将某个文件/阅读器的最后 n 行复制到另一个文件/阅读器等。

4

4 回答 4

1

这似乎是一个不错的选择:Tailer Library此实现基于它,但并不相同。不过,两者都没有实现回溯以获取最后 100 行。:(

于 2009-06-02T03:09:18.483 回答
1

您可以在Heritrix的一个实用程序类中查看这个尾部实现。我没有写它,但我写了使用它的代码,据我所知,它可以正常工作。

于 2009-06-02T09:52:06.100 回答
0

“最后 n 行”对于潜在的可变宽度编码等非常棘手。

我在 C# 中编写了一个反向行迭代器以响应另一个 SO question。代码就在那里,尽管它使用了 C# 中不可用的迭代器块 - 你最好将所需的大小传递给方法并让它构建一个列表。(然后您可以将yield return我代码中的语句转换为list.add()调用。)您当然需要使用 JavaCharset而不是Encoding,它们的 API 也略有不同。最后,您需要在完成后反转列表。

这一切都假设您不想只阅读整个文件。如果您不介意这样做,您可以使用循环缓冲区来保留“此刻的最后 n 行”,通读到最后并在之后返回缓冲区。这实现起来会简单得多,但对于非常长的文件来说效率会低得多。不过,它很容易应对任何读者,而不是只在流上选择几个选定的字符集(我的反向迭代器就是这样做的)。

于 2009-06-02T05:27:57.743 回答
0

这是一个 UI 应用程序 - 您可以查看源代码以了解它的作用(基本上是一些线程和 IO)。跟随

于 2009-06-02T04:39:23.763 回答