\n
のパフォーマンススピードに焦点を当てて、約30行のファイルの最後または2行を読み込む方法はありますか?新しいIO.FileStream()オブジェクトを作成した場合のC#Cのファイルの最後の行を読むには
答えて
を使用して
string[] splitedArray= input.Split('\n');
string lastLine = splitedArray[splitedArray.Length-1];
は、ユーザーが指定できるようになります.Seek()方法があります:
EDIT:より速く 何かあなたが探したい場所の一部としてのファイルの終わり。しかし、この時点で最後の行がどこから始まるかを直接的に確認する方法はありません。あなたは後方に向かって行を探して歩くか、この最後の行がどのように見えるか(そしてどれくらい長くなっているか)を知っていれば、どれくらいの距離を必要とするかを推測することができます追求してもう少し進んでください。 FileStream.CanSeekプロパティを使用して、現在のインスタンスがシークをサポートしているかどうかを判断します。詳細については、Stream.CanSeekを参照してください。
FileStream fileStream = new FileStream(fileName, FileMode.Open)
// Set the stream position to the end of the file.
fileStream.Seek(0, SeekOrigin.End);
あなたが/ N
を得るまで、あなたはまた、この他の質問で読むことができますループでオーバー行く:場合は私の頭の上からHow to read a text file reversely with iterator in C#
最後から文字列を読み取る方法はありますか? –
私は自分の答えを編集しました。私の答えではパフォーマンスが最適化されていることに注意してください。ファイル全体を読む必要はありません! –
string lastline = input.Substring(
input.LastIndexOf('\n'));
'string lastline = input.Substring(input.LastIndexOf( '\ n'))'ここで十分でしょう。 –
@Lester私の頭と私の答えを更新しました;-) – rene
あなたの答えでは、パフォーマンスは最悪です。すべての文字列を文字列に読み込む必要があります。これは必要ありません。 –
任意のファイルを読むときにより良いパフォーマンスが必要です。メモリマップファイルの読み書きが可能です。これは、低レベルのAPIで動作することです。
(注:これはC#ではなくVB.NETです)私は数時間前にa function that I created for Pythonを翻訳しました。 \n
唯一最良の選択です...
Public Function tail(ByVal filepath As String) As String
' @author marco sulla ([email protected])
' @date may 31, 2016
Dim fp As String = filepath
Dim res As String
Using f As FileStream = File.Open(fp, FileMode.Open, FileAccess.Read)
Dim f_info As New FileInfo(fp)
Dim size As Long = f_info.Length
Dim start_pos As Long = size - 1
If start_pos < 0 Then
start_pos = 0
End If
If start_pos <> 0 Then
f.Seek(start_pos, SeekOrigin.Begin)
Dim mychar As Integer = f.ReadByte()
If mychar = 10 Then ' newline
start_pos -= 1
f.Seek(start_pos, SeekOrigin.Begin)
End If
If start_pos = 0 Then
f.Seek(start_pos, SeekOrigin.Begin)
Else
mychar = -1
For pos As Long = start_pos To 0 Step -1
f.Seek(pos, SeekOrigin.Begin)
mychar = f.ReadByte()
If mychar = 10 Then
Exit For
End If
Next
End If
End If
Using r As StreamReader = New StreamReader(f, Encoding.UTF8)
res = r.ReadLine()
End Using
End Using
Return res
End Function
- 1. Cファイルの最後まで読む
- 2. STDOUTの最後の行を読む
- 3. Cのファイルから最後のn行を読み込む方法
- 4. PHPでtxtファイルの最後の5行を読む方法#
- 5. Bash-ファイルの最後から2番目の行を読み込む方法は?
- 6. ファイルの次の行から読むC++
- 7. テキストファイルで最後の行を読み込む最良の方法
- 8. Cの行を読む
- 9. C++でファイルの最後から読み込む最も効率的な方法は何ですか? (ファイル内の最後の128ビットの解析)
- 10. 最初の1000行の.csvファイルをRに読み込むには?
- 11. 読む私は私がパンダに読み込むCSVファイルを持っているすべてが、CSVファイルの最後の行パンダ
- 12. Cでファイルを読み込むための最適なバッファサイズ
- 13. C#でWMVファイルを読むには?
- 14. C#でwk3ファイルを読むには?
- 15. 最後に頻繁な間隔でMySQLの固定数の行を読む
- 16. は、C#で特定のエンコードタイプの.txtファイルを読むには
- 17. テキストファイルの最初の行だけを読み込むには?
- 18. C#の:FileStream.Read()が最後にファイルを読んますが、ここでは0
- 19. Cでファイルを読む
- 20. C#でmboxファイルを読む
- 21. C++ txtファイルを読む?
- 22. C++のファイルから行Yを読み込むまで
- 23. ファイルのアップロード後にJSFページを読み込む方法は?
- 24. Objective-Cで特定のフォルダのファイルを読むには?
- 25. Eggdropと.tclを使ったアクティブなログファイルの最後の行を読む
- 26. txtファイルの行を読む[java]
- 27. Java - 1行のファイルを読む
- 28. C#の - 不規則な改行文字を含むファイルを読む
- 29. 最後の行のjqueryダイアログが表示されないajaxを読み込む
- 30. d行内の行の配列にファイルを読み込む
ため、ほとんど重複して検索することを確認していない:[どのように、読み・テキスト・ファイル・逆-付きイテレータ・イン・C-シャープ?] (http://stackoverflow.com/questions/452902/how-to-read-a-text-file-reverse-with-iterator-in-c-sharp?) – nawfal