1

FTPサーバーからテキストファイルを最後から1行ずつ読み込む方法はあるのだろうか。大きなファイルを読み取る必要があり、最後の数行だけに関心があります。

この質問のコードを使用して、HD 上のファイルから最後の行を読み取ることができます:テキスト ファイルの最後の行をすばやく読み取りますか? 、そしてそこからコードを使用してFTPサーバー上のファイルを1行ずつ読み取ることもできます:Java. FTP からファイルを読み取りますが、全体をダウンロードしないでください。

ただし、最初のケースでは関数 tail は変数型 File を使用し、2 番目のコードは変数型 InputStream を使用します。

ストリームをファイルに変換する方法を探していたところ、コンテンツを tmp ファイルにダウンロードする方法しかないことがわかりました ( InputStream を仮想ファイルに変換する方法)。しかし、私が書いたように、このファイルは非常に大きい可能性があるため、ダウンロードしたくありません。

これを行う別の方法を知っている人はいますか?

4

2 に答える 2

1

FTP プロトコルを使用することはできません。このプロトコルは、ファイルの最初からのフェッチのみをサポートします。(中断された転送を途中で再開できるオプション機能がありますが、サーバーが再開ポイントの可能性を表す不透明な「マーカー」を送信するかどうかによって異なります。これを使用して、転送の最後までスキップする方法がわかりません。任意のファイル)

別の方法を検討している場合は、HTTP を HEAD リクエストと組み合わせて使用​​し、GET リクエストにRangeヘッダーを使用することを検討してください。(これは、それらのリクエストを認識するサーバーに依存します...)

于 2013-09-24T09:31:34.143 に答える
1

不可能です。しかし、入力ストリームを 1 行ずつ読んで、最後の数行だけを覚えておくことができます。次の行が来たら、最初に読んだ行を忘れてください。

于 2013-09-24T09:15:16.703 に答える