ファイル(File)





書き込み


using System.IO; { FileStream f = new FileStream( "d:/test.txt", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite ); StreamWriter s = new StreamWriter( f ); s.WriteLine("aaa"); s.WriteLine("bbb"); s.Flush(); }



ロック(Lock)


{ FileStream f = new FileStream( "d:/test.txt", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite ); StreamWriter s = new StreamWriter( f ); s.WriteLine("aaa"); s.WriteLine("bbb"); s.Flush(); // ファイル全体をロックする f.Lock(0, f.Length); // 何か長い処理をする。 // ロック中は他のプロセスはアクセスできない。 // プロセスはファイルにアクセスできません。別のプロセスが使用中です。 Thread.Sleep( 30 * 1000 ); f.Unlock(0, f.Length); } // ロックをすることで、他のプロセス(コード)からアクセスすると IOException が発生する。 f.Lock(0, f.Length); FileStream f2 = new FileStream( "d:/test.txt", FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite ); StreamWriter s2 = new StreamWriter( f2 ); s2.WriteLine("aaa"); s2.WriteLine("ccc"); // 厳密には Write() で追加したバッファの内容がファイルへ転送した瞬間におきる。 s2.Flush(); s2.Close();