2016-12-09 22 views
1

私は、UTF-8でエンコードされた1行形式の大きなファイルを読むという問題を抱えています。ファイル内の行の長さは一定です。大きなファイルから特定の行を読み取る方法は?

ファイルの平均ファイルサイズは300kです。時間が主な制約なので、できるだけ早くそれをやりたい。

私は

File.ReadLines("file.txt").Skip(noOfLines).Take(1).First(); 

きゅう

を試みた。しかし、時間は十分に満足のいくものではありません。

私の最大の希望は、ストリームを使用して、その行を目的の行に設定することでしたが、問題は行のサイズがバイト単位で異なることです。

どのようにすればいいですか?あなたはLINQ(使用したくないところ今これはある

+0

を比較するポストもありますlにたとえば、FileStreamでの長さ。 http://stackoverflow.com/a/8678918/246342 –

+0

@AlexK .: "ストリームを使用し、目的の行を開始位置に設定しますが、問題は行のサイズがバイト単位で異なることです" –

+0

クエリを簡略化することができます:File.ReadLines( "file.txt")。ElementAtOrDefault(noOfLines + 1) ' –

答えて

1

- :。 あなたが実際にファイルに新しい行のn番目の出現を見つけて、次の改行までのものを読みたいの

あなたはおそらくメモリ上でこの文書をチェックアウトするだけでなく、ファイルをマッピングされた: https://msdn.microsoft.com/en-us/library/system.io.memorymappedfiles.memorymappedfile(v=vs.110).aspx

各行は、あなたは、単にオフセットを計算し、そこから読み取ることができ、固定長である場合には異なるアクセス方法 http://cc.davelozinski.com/c-sharp/fastest-way-to-read-text-files

関連する問題