テキストファイルに書き込むプログラムを実行中に別プログラムで、
下記の処理(ファイルがロックされているかチェックする)を実行したのですが、ファイルが使用中とみなされていないみたいでcatchに入りません。
ちなみにメモ帳を開いたまま下記の処理を実行してもcatchには入りませんでした。
ただ、サクラエディタを開いた状態だとcatchに入ります。
調べてみるとnotepadは排他制御を行っていないとかで上手くいっていないのではないかと思いましたが、規定プログラムをサクラエディタにして書き込み処理を行っている最中に下記処理を実行してもcatchには入りませんでした。
どうすれば書き込み中を判断できるでしょうか?
private bool IsFileLocked(string path)
{
FileStream stream = null;
try { stream = new FileStream(path, FileMode.Open, FileAccess.ReadWrite, FileShare.None); } catch { return true; } finally { if (stream != null) { stream.Close(); } } return false;
}
残念ながら、メモ帳は単に中身を表示しているだけなのでその方法やそれに近い方法(ファイルの状態を調べる)では無理ですね。メモ帳は開いている最中に手動でそのファイルを消すことができます。真っ向から取り組むと大変ですが、そもそもなぜファイルがロックされているのかを判別したいのかが詳しくわかれば別のアプローチもあるかもしれません。その辺り詳しく説明願えますか?
回答1件
あなたの回答
tips
プレビュー