Java - 从最后的流中读取文件

时间:2013-09-24 09:08:03

标签: java ftp stream readfile

我想知道是否有办法从FTP服务器端逐行读取文本文件。我需要阅读大文件,我只对最后几行感兴趣。

我可以通过这个问题的代码读取我HD上的文件的最后一行:Quickly read the last line of a text file?,我也可以逐行读取FTP服务器上的文件:{{3} }。

但是在第一种情况下,函数tail使用变量类型File,而第二种代码使用变量类型InputStream。

当我寻找转换流到文件的方式时,我发现只有真正的方法是将内容下载到tmp文件(Java. Read file from FTP but DON'T download it whole)。 但我不想下载这个文件,因为它可能非常大,正如我写的那样。

有人知道另一种方法吗?

2 个答案:

答案 0 :(得分:1)

这是不可能的。但是你可以逐行读取输入流并记住最后几行。如果下一行到了,就忘记第一条读线。

答案 1 :(得分:1)

使用FTP协议是不可能的。该协议仅支持从头开始提取文件。 (有一个可选功能允许中途传输在中途重新启动,但它取决于服务器发送不透明的“标记”,表示可能的恢复点。我看不出你如何使用它来跳到一个结束任意文件。)

如果您正在考虑替代方案,请考虑将HTTP与HEAD请求结合使用,并将GET请求与Range标头结合使用。 (这取决于服务器识别这些请求......)