
言語:C# の質問です。(初心者 初めて1週間)
ファイルの削除を行った際に、別プロセスが使用中で、
削除できなかった場合に対して、別処理を行いたいです。
ファイルが削除できない場合は、エラーを取得することができるのですが、
別プロセスが使用中のみの制御を入れたいと思っています。
VB6では、ファイル削除(Kill)ができなかった場合に、
エラーコードを返して、該当するエラーコードのみに
別処理を行うことができていました。
それと同じことを、C#でも行いたいです。
処理としては、
1.ファイルの削除を行う
2.ファイルの削除が出来なかった場合に対してのみ、
別処理を入れる
(別プロセスが使用中のため削除できないファイルに対して)
このような処理を行いたいのですが、
ファイルが削除できなかった場合の、エラーコードを
求め方を色々調べてみたのですが、見つかりません。
下記ソースで、プログラムを作成中です。
try{
System.IO.File.Delete(@削除するファイル名);
}
cach(System.IO.IOException)
{
//ここでエラーコードを取得し、該当するエラーコードのみに
//対して、別処理を入れたい
MessageBox.Show(err.Message);
}
MessageBox.Show(err.Message);
↑
もし、エラーコードが取得できないのであれば、
このエラーメッセージ文章に対してリテラルで制御をいれる
ことも考えています。
どうか、ご教授ください。
よろしくお願いいたします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
あぁ、つまらないミスが・・・
if(errNum = (int)Win32Error.SharingViolation)
↓
if(errNum == (int)Win32Error.SharingViolation)
Visual Studio(Expressを除く)を使用しているのであれば、マイクロソフトがソースコードを公開しているので、ブレークポイントを仕掛けてロック時にどのようにIOExceptionがthrowされているのか追跡することもできるかと思います。
やり方は下記URLに解説されています。
http://www.atmarkit.co.jp/fdotnet/insiderseye/20 …
.NET Reflectorでもソースコードを確認できますが、ライセンス違反になるので。
No.2
- 回答日時:
VB6はよく知りませんがGetLastError API相当でいいのであればMarshal.GetLastWin32Errorで判別できるのではないでしょうか?
enum Win32Error
{
SharingViolation = 0x00000020,
}
int errNum = System.Runtime.InteropServices.Marshal.GetLastWin32Error();
if(errNum = (int)Win32Error.SharingViolation)
{
//ロックがかかっていた場合の処理。
}
当然ですがGetLastWin32Errorを実行するまでに別のエラーが発生した場合は上書きされてしまうので取得できません。
No.1
- 回答日時:
IOExceptionにエラーコードのプロパティはありません。
ただ、IOExceptionのMessageプロパティが、プロセス排他の場合に次のようになります:
"別のプロセスで使用されているため、プロセスはファイル '(ファイル名が入ります)' にアクセスできません。"
ここは2番目のアイディアである、メッセージを引っかけるやり方で対応されてはいかがでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- ノートパソコン ソフトアンインストール残存ファイル 3 2022/09/13 18:15
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/10 11:34
- その他(ソフトウェア) 特定のpremiere proのファイルが開けなくなりました。 1 2022/11/16 12:31
- マルウェア・コンピュータウイルス FlashPlayerの削除とマルウェア感染について 5 2023/02/23 20:52
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Windows 10 win10 立ち上げ時のエラー 1 2023/04/17 11:55
- ドライブ・ストレージ Android端末でSDカードが機能しなくなりました 6 2023/02/17 17:20
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Windows 10 2件の中断されたアクション 予期しないエラーのため、ファイルを削除できません。 このエラーが再発する 1 2022/03/27 19:33
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELファイルに誰がアクセスし...
-
《エクセルVBA》「他の人が該当...
-
basp21でのファイルアップロー...
-
vbでFTPサーバーに対して、サー...
-
VBAでサーバーにアクセスするに...
-
cgiのメールでファイルを添付し...
-
空のファイル
-
ブラウザの戻るボタンでの動き...
-
CGI_lite.pmを使ったファイルの...
-
HTML5のFileAPIでファイルの存...
-
KENT WEB(昨日の続きです)
-
社内の文具請求システムを作成...
-
ラジオボタンのグループ化
-
perl 特殊配列@INC について
-
URLに~/cgi-bin/~を隠す方法
-
CGIのQAサイト
-
メールフォームの設定なのです...
-
アクセスログでホスト名を
-
自宅サーバーでASPを使いたい
-
MIME::EntityやNet::SMTPを使わ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELファイルに誰がアクセスし...
-
《エクセルVBA》「他の人が該当...
-
VBAでサーバーにアクセスするに...
-
VBScriptで、ファイルから任意...
-
vbでFTPサーバーに対して、サー...
-
tplファイルのプレビューの方法
-
Perl 別ドメインのファイル存在...
-
C# ファイル削除のエラーコード
-
空のファイル
-
HP上への音楽の貼り付け方
-
JAVAで別サーバーのファイルの...
-
サーバー上のフォルダ削除が出...
-
30分ごとに更新
-
Dreamweaver(ドリームウィーバ...
-
Webフォルダでサーバーからイン...
-
HTML5のFileAPIでファイルの存...
-
cgiのメールでファイルを添付し...
-
ファイルアップロードCGIを教え...
-
CGIを使用してブラウザからファ...
-
ブラウザの戻るボタンでの動き...
おすすめ情報