1

我想知道是否有一种方法可以从 FTP 服务器的末尾逐行读取文本文件。我需要阅读大文件,而且我只对最后几行感兴趣。

我可以使用以下问题的代码从我的 HD 上的文件中读取最后一行:快速读取文本文件的最后一行?,我也可以使用那里的代码逐行读取 FTP 服务器上的文件:Java。从 FTP 读取文件,但不要全部下载

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

当我在寻找将流转换为文件的方法时,我发现唯一真正的方法是将内容下载到 tmp 文件(如何将 InputStream 转换为虚拟文件)。但我不想下载这个文件,因为它可能非常大,就像我写的那样。

有人知道另一种方法吗?

4

2 回答 2

1

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

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

于 2013-09-24T09:31:34.143 回答
1

这是不可能的。但是您可以逐行阅读输入流并记住最后几行。如果下一行出现,只需忘记第一行读取。

于 2013-09-24T09:15:16.703 回答