C#
定石5: FileShareで同時アクセスを扱う
出典: C# ファイルIO の正解 — StreamReader / File.ReadAllLines / File.ReadLines / using の使い分け — 定石5: FileShareで同時アクセスを扱う
// ✅定石5: FileShare.ReadWriteで同時アクセスを許可
using System.IO;
using System.Text;
using (var fs = new FileStream(@"C:\logs\writing.log",
FileMode.Open,
FileAccess.Read,
FileShare.ReadWrite))//別プロセスの読み書きも許可
using (var sr = new StreamReader(fs, Encoding.UTF8))
{
string line;
while ((line = sr.ReadLine())!= null)
{
ProcessLogLine(line);
}
}
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
Source収録記事
この snippet は記事の「定石5: FileShareで同時アクセスを扱う」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。
同じ記事から
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
// ✅定石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
// ✅定石6: BOMの有無で簡易判定(業務系で雑なエンコーディング判定) public static Encoding DetectEncoding(string path) { var bytes = new byte[4];未収録
定石6:エンコーディング判定の実践— Shift-JISとBOM付きUTF-8の見分け
#2c74893d554e
