0

すべてのファイルをローカルマシンにダウンロードせずに、リモートマシン(ネットワーク経由でアクセス可能)にある大きなファイルの最後のN行を読み取るプログラムを作成することは可能ですか?実装はローカルコンピュータでのみ行う必要があり、リモートで変更を加えることはできません。

可能であれば、Javaでそれをどのように行うことができますか?

4

2 に答える 2

0

以下を参照してください:テキスト ファイルの最後の行をすばやく読み取りますか?

また、ファイルの最後の N 行を読み取る方法の例も提供します。seek コマンドを使用して、読み取りたくないバイトをスキップします。

于 2013-04-08T19:37:03.047 に答える
0

ファイルを開いてアクセスするには、バッファリングされていない io 関数を使用する必要があります ( open/ read/lseekまたはCreateFile/ ReadFile/ SetFilePointer)。次にopen、ファイルを検索し、ファイルの末尾に近い場所をシークします: lseek(fd,SEEK_END,-1024). 次に、ファイルから 1024 バイトを読み取り、読み取ったデータをスキャンして行終端シーケンスを探します。行数が N+1 未満の場合は、オフセット -2048 で再度シークし、余分な 1024 バイトを読み取ります。バッファリングしたデータに N+1 行終端シーケンスが表示されるまで、このプロセスを繰り返します。

それでおしまい。

于 2012-09-26T22:30:49.597 に答える