我想知道是否已经存在用于实现部分/全部 *NIX 尾部的 util 代码。我想将某个文件/阅读器的最后 n 行复制到另一个文件/阅读器等。
问问题
2763 次
4 回答
1
这似乎是一个不错的选择:Tailer Library。此实现基于它,但并不相同。不过,两者都没有实现回溯以获取最后 100 行。:(
于 2009-06-02T03:09:18.483 回答
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 回答