C#
定石3: File.ReadLines —大ファイルのストリーム読み込み
出典: C# ファイルIO の正解 — StreamReader / File.ReadAllLines / File.ReadLines / using の使い分け — 定石3: File.ReadLines —大ファイルのストリーム読み込み
// ✅定石3: File.ReadLinesで大ファイルをストリーム処理
using System.IO;
using System.Text;
// IEnumerable<string>なのでforeachで1行ずつ読む(メモリには1行分しか乗らない)
foreach (var line in File.ReadLines(@"C:\logs\app-2026-05.log", Encoding.UTF8))
{
if (line.Contains("ERROR"))
{
ExtractErrorEntry(line);
}
}
// LINQ連携も可能(遅延評価で全件メモリに乗らない)
var errorCount = File.ReadLines(@"C:\logs\app-2026-05.log", Encoding.UTF8)
.Count(l => l.Contains("ERROR"));
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
Source収録記事
この snippet は記事の「定石3: File.ReadLines —大ファイルのストリーム読み込み」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。
同じ記事から
5 件// ✅定石1: StreamReader + usingでShift-JIS読み込み using System.IO; using System.Text;未収録
定石1: StreamReader + using + Encoding指定
#3070cb2953d8
// ✅定石2: File.ReadAllLinesで一発配列化 using System.IO; using System.Text;未収録
定石2: File.ReadAllLines —小ファイル向きの一撃
#416c419f6cb7
// ✅定石4:性能比較(10万行×約100MBのログを想定) const string path = @"C:\logs\big-app.log"; // ReadAllLines版(メモリに全部ロード)
▶ 実行可
定石4:性能比較— Stopwatch + GC.GetTotalMemory
#976121387821
// ✅定石5: FileShare.ReadWriteで同時アクセスを許可 using System.IO; using System.Text;未収録
定石5: FileShareで同時アクセスを扱う
#6cd0545383e7
// ✅定石6: BOMの有無で簡易判定(業務系で雑なエンコーディング判定) public static Encoding DetectEncoding(string path) { var bytes = new byte[4];未収録
定石6:エンコーディング判定の実践— Shift-JISとBOM付きUTF-8の見分け
#2c74893d554e
