ファイルの排他制御のサンプル
C#でファイルの排他制御の動作確認用プログラム。 FileShareの使い方のサンプルです。
using System; using System.IO; namespace sample { class Program { static void Main(string[] args) { File.WriteAllText("aaa.txt", "sample"); // 読み込み中に書き込み可能 Console.WriteLine("------------------"); Console.WriteLine("FileShare.ReadWrite"); using (FileStream stream = new FileStream("aaa.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { using (new StreamWriter("aaa.txt", true)) { Console.WriteLine("OK write"); } using (new StreamReader("aaa.txt")) { Console.WriteLine("OK read"); } } // 読み込み中に読み込み可能 Console.WriteLine("------------------"); Console.WriteLine("FileShare.Read"); // FileStreamのデフォルトはFileShare.Read using (FileStream stream = new FileStream("aaa.txt", FileMode.Open, FileAccess.Read)) { using (new StreamReader("aaa.txt")) { Console.WriteLine("OK read"); } try { using (new StreamWriter("aaa.txt", true)) { Console.WriteLine("OK write"); } } catch (IOException ex) { Console.WriteLine("NG write"); } } // 読み込み中に読み込み可能 Console.WriteLine("------------------"); Console.WriteLine("FileShare.Write"); // FileStreamのデフォルトはFileShare.Read using (FileStream stream = new FileStream("aaa.txt", FileMode.Open, FileAccess.Read, FileShare.Write)) { using (new StreamWriter("aaa.txt", true)) { Console.WriteLine("OK write"); } using (new StreamWriter("aaa.txt", true)) { Console.WriteLine("OK read"); } } } } }Tweet