プログラマーを職業としてます。 Flex,Air,C#,Oracle,PHPの言語ノウハウを中心に情報発信していきます


[C#] ファイルを開こうとするとIOException(別のプロセスで使用されている…)が表示されるとき

プログラムが常時掴んでいるログファイルや設定ファイル、WordやExcelファイルなどは、FileStreamから取得しようとすると、以下のエラーとなります。
例外
System.IO.IOException
「別のプロセスで使用されているため、プロセスはファイル ‘*****’ にアクセスできません。」

書き込みできないとは当然として、読み込みくらいはさせてよと思いますよね。

こういったファイルを読むには、引数指定に工夫が必要なようです。

FileStream fs = new FileStream(
          fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

ポイントは、最後の引数FileShare.ReadWriteです。
読み込みたいだけなので、FileShare.Readと指定してしまいがちですが、Readだと読み込めません。

最後の引数はシンプルなサンプルだと記載しない場合が多いので、知らない人も多いのではないでしょうか。
(私も知りませんでした。。。)

掴んでいるプログラムがどんなロックをしているかによるので、完全ではないのですが、
ちょっとしたビューワを作りたいときには、この指定が有効になると思います。

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です