C#
定石1: StreamReader + using + Encoding指定
出典: C# ファイルIO の正解 — StreamReader / File.ReadAllLines / File.ReadLines / using の使い分け — 定石1: StreamReader + using + Encoding指定
// ✅定石1: StreamReader + usingでShift-JIS読み込み
using System.IO;
using System.Text;
var sjis = Encoding.GetEncoding("shift_jis");
using (var sr = new StreamReader(@"C:\input\trade-data.csv", sjis))
{
string line;
while ((line = sr.ReadLine())!= null)
{
// 1行ずつ処理(CSV分解→ DB INSERT等)
ProcessOneRow(line);
}
}
// ↑ブロック終了でsr.Dispose()がfinallyで確実に呼ばれる
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
Source収録記事
この snippet は記事の「定石1: StreamReader + using + Encoding指定」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。
同じ記事から
5 件// ✅定石2: File.ReadAllLinesで一発配列化 using System.IO; using System.Text;未収録
定石2: File.ReadAllLines —小ファイル向きの一撃
#416c419f6cb7
// ✅定石3: File.ReadLinesで大ファイルをストリーム処理 using System.IO; using System.Text;未収録
定石3: File.ReadLines —大ファイルのストリーム読み込み
#275aa66b0c4b
// ✅定石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
