|お問い合わせホームサンプルコード雑記デザインパターンソフトウェア気になった事を自由に書いてます。そのファイルオープン大丈夫ですか?ここ数年で次々と新しいプログラミング言語が生まれ、それに伴い開発環境も非常に使いやすくなりました。ホント、昔と比べてずいぶん簡単になったと思います。昔はハードやOSよりの言語でしたが、現在は抽象化が進みハードやOSの知識が浅くても割と簡単にアプリケーションの作成ができるようになりました。OSの機能の1つであるファイル管理の中に排他制御というものがあります。これはあるプログラムがファイルを使っている間、他のプログラムからファイルアクセスできないようにする仕組みのことです。当然ですが、今でもこの仕組みは存在します。C#ではStreamReaderやStreamWriter、FileStreamを使ってファイル操作します。・FileStreamは以下から選ぶことができます。プロセスで継承」この辺まで言うと、ピンとくる方がいらっしゃると思いますが^^;排他制御関連でよく見かけるパターン(問題??)を2つほどご紹介します。1)排他制御の指定を行わずにFileStreamを使う。実はデフォルトは読み書き禁止です。このことを知らずにいると、たまにファイルオープンに失敗する、なぜだろう?ユーザがエディタ(排他機能ON)でファイルを操作してたのでは?と実装ミスなのにユーザに疑いをかける事になるかもしれません。読み込みだけだから大丈夫!これはStreamReaderとStreamWriterが絡むときに見かけます。プログラムAはログをファイル出力。プログラムBはファイルを読み込み画面に表示するビューアだったとします。プログラムAはファイル出力するだけなのでStreamWriterを使用プログラムBは読み込みだけだからStreamReaderを使用します。このときログファイルを出力中にStreamReaderでオープンしようとすると例外が発生します。その逆で、ファイルを読み込み画面へ反映している最中に、ログファイルを出力しようとしても例外となります。ビューアのせいでログが出力できない。なったら困りものですね。