|
分類:[VB.NET/VB2005 以降]
Dim sr As System.IO.StreamReader '例外チェック
Try
sr = System.IO.File.OpenText(フルパス)
sr.Close()
Catch ex As System.IO.IOException
MessageBox.Show(System.IO.Path.GetFileName(フルパス) & "は既に別のプロセスで起動しています。" & vbNewLine & "別のプロセスを終了させてから再実行してください。")
ErrLog(I) = 5
Exit Function
Finally
If Not (sr Is Nothing) Then
sr.Close()
End If
End Try
◆開発環境:Windows7 64Bit, VisualBasic2008EE
既存のPDFファイルをSystem.IO.File.Copyメゾットを用いて別名でコピーするプログラムを作成しています。
コピーする際、コピー元のファイルが開かれていないかを、上記のコードを用いて例外処理したいのですが上手く行きません。
試しに例外処理のコードを全てコメントアウトし、コピー元ファイルを開きながらデバックしてみましたが、そもそもエラーが検出されません。
同様のコードを用いてExcelファイルをコピーしようとすると、きちんとエラーが検出され、例外処理も上手く行きます。
試しにローカル上で内容に「元」と書かれたPDFを作成し、これを開きながら、内容に「新」と書かれた同名のPDFファイルを上書きコピーしてみました。
エラーは出ず上書き出来、一度、開かれていたPDFファイルを閉じ、開き直すと内容が「新」になってしました。
これはPDFファイルの仕様上、エラーが出ないのでしょうか?
また、PDFファイルが開かれているかを取得する方法はありますでしょうか?
ご存じの方、ご教示ください。
|