2016-09-23 1 views
0

groovyでファイルの最後の行を取得しても大きな結果は得られません。groovyのファイルの最後の行を取得

groovyでファイルの最終行を取得するにはどうすればよいですか?テキストファイルの各行を

new(File("/home/user/somefile.txt").eachLine{ 
     lastLine = it 
    } 

.eachLineの繰り返し処理とeachLineは、ファイルを経由終了するまでlastLineが現在の反復に設定されています:

+0

この質問がSpockとどのように関連しているかわかりません。タグを削除できますか? – kazanaki

答えて

1

は、最後の1を取得し、その後、すべての行を取得します。

+3

'lines [-1]'はget/size-1行よりも慣れています –

+0

ファイルが非常に大きい場合、メモリが枯渇する可能性があります。 – BalRog

+0

@tim_yates私は新しいことを学びました。 – Alexiy

1

は、ここで私がなってしまったものです。かなり簡単。

def lines=new File("/home/user/somefile.txt").readLines() 
def lastline=lines.get(lines.size()-1) 

または、ファイルが危険なほど大きい場合:

def last=new File('/home/user/somefile.txt').withReader { r-> r.eachLine {it} } 

アスカーの答えとほぼ同一である

+0

'if(it!= null){'は必要ありませんか? –

+0

@tim_yatesさんが私の投稿を更新しました。ありがとう –

0

groovyでファイルの最終行を取得するにはどうすればよいですか?

ファイルの内容によって異なります。ファイル内の行が固定長である場合は、ファイルサイズを調べ、各行の長さで割り、ランダムファイルアクセスを使用してファイルの最後の行にジャンプして読み込むことができます。それはファイル全体を読むよりも効率的です。行の長さがわからない場合は、おそらくファイル全体を読んで、最後に読んだ行の前にすべてを破棄しなければならないでしょう。

関連する問題