Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的Tail-n1000(apachecommons等)_Java_Tail - Fatal编程技术网

Java中的Tail-n1000(apachecommons等)

Java中的Tail-n1000(apachecommons等),java,tail,Java,Tail,我想知道是否已经存在实现部分/全部*NIX tail的util代码。我想将某个文件/读取器的最后n行复制到另一个文件/读取器,等等。这似乎是一个不错的选择:。是基于它的,但不一样。但是,也不实施回溯以获取最后100行:(这是一个UI应用程序-您可以查看源代码,了解它的功能(基本上是一些线程和IO)对于可能的可变宽度编码等,“最后n行”非常棘手 我在C#中编写了一个反向行迭代器来响应。代码就在那里,尽管它使用的迭代器块在C#中不可用-您最好将所需的大小传递到方法中,并让它构建一个列表。(然后可以将

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

这似乎是一个不错的选择:。是基于它的,但不一样。但是,也不实施回溯以获取最后100行:(

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

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

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


这都是假设您不想只读取整个文件。如果您不介意这样做,您可以使用循环缓冲区来保留“当前的最后n行”,一直读到最后,然后返回缓冲区。这将更容易实现,但对于非常长的文件来说效率要低得多。不过,这很容易处理任何读取器,而不是流上的几个选定字符集(我的反向迭代器就是这样做的).

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