C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

フォルダーをリネームする時にエラーが出る

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■90606 / inTopicNo.1)  フォルダーをリネームする時にエラーが出る
  
□投稿者/ めがね (1回)-(2019/03/24(Sun) 17:30:43)

分類:[.NET 全般] 



VB.NETを使ってフォルダーをリネームするプログラムを作成しています。

基本的には、
Directory.Move(aaa, bbb)
でいけるのですが、
フォルダー内にあるファイルを編集した後にリネームしようとすると
そのファイルの編集は終了しているにも拘わらず

型 'System.IO.IOException' のハンドルされていない例外が mscorlib.dll で発生しました

追加情報:パス 'E:\ccc' へのアクセスが拒否されました。

というエラーが出ます。

エクスプローラー上で手動でリネームするとうまくいくので
バックグラウンドプロセスでいずれかのファイルが使用中ということはないと思います。

エクスプローラーでリネームできるのなら
VBでもリネームできると思うのですが
どうすればエラーを出さずに強制的にリネームすることができますか?



引用返信 編集キー/
■90607 / inTopicNo.2)  Re[1]: フォルダーをリネームする時にエラーが出る
□投稿者/ Hongliang (774回)-(2019/03/24(Sun) 18:12:19)
2019/03/24(Sun) 18:13:12 編集(投稿者)

確認事項として、(ネットワークから隔離するなどした上で)アンチウィルスソフトを停止してしばらく運用し、再現するか確認してみて下さい。
ファイルクローズ後にアンチウィルスソフトが改めてファイルをオープンし検証している時に削除を試みて失敗する、というのがよくあるケースなので。

上記が正しいとして、実用上としてはアンチウィルスソフトを止めるわけにも行かないので、とりあえず例外が出た際は500ミリ秒とか1秒とか待ってリトライしてみるというのはどうでしょうか。
引用返信 編集キー/
■90608 / inTopicNo.3)  Re[2]: フォルダーをリネームする時にエラーが出る
□投稿者/ めがね (2回)-(2019/03/24(Sun) 18:43:30)
ありがとうございます。

アンチウイルスソフトはインストールはしていますが
リアルタイム監視は無効化しているので
これが原因ということはないと思います。

引用返信 編集キー/
■90612 / inTopicNo.4)  Re[3]: フォルダーをリネームする時にエラーが出る
□投稿者/ とっちゃん (581回)-(2019/03/24(Sun) 22:52:19)
No90608 (めがね さん) に返信

プログラムのカレントディレクトリが古いディレクトリになっているなどがあると、エラーが発生します。

ファイルを編集した後という話なので、そのあたりも確認したほうが良いと思います。

引用返信 編集キー/
■90627 / inTopicNo.5)  Re[1]: フォルダーをリネームする時にエラーが出る
□投稿者/ shu (1170回)-(2019/03/26(Tue) 13:15:05)
No90606 (めがね さん) に返信

> フォルダー内にあるファイルを編集した後にリネームしようとすると
> そのファイルの編集は終了しているにも拘わらず
どのような処理を行っているのか?リネーム時にファイルがまだ開かれているとか?



引用返信 編集キー/
■90645 / inTopicNo.6)  Re[2]: フォルダーをリネームする時にエラーが出る
□投稿者/ めがね (4回)-(2019/03/31(Sun) 18:58:30)
処理というか、画像ビューアで開いただけなのですが、
ビューアは既に閉じられており、タスクマネージャーにも残っていません。
しかし、リネームできません。

DirectoryInfoも方法と
FileSystemObject
でもリネームできませんでした。

上でも書いたようにエクスプローラーだとリネームできるのはなぜなのでしょうか?

引用返信 編集キー/
■90646 / inTopicNo.7)  Re[3]: フォルダーをリネームする時にエラーが出る
□投稿者/ キングダム (14回)-(2019/03/31(Sun) 20:50:31)
No90645 (めがね さん) に返信

エクスプローラーでリネームできて
それ以外のプロセスでリネームが失敗するなら
エクスプローラーがファイルやフォルダを使用してるんじゃないでしょうか

リネームの処理をリトライするようにしてリネームが失敗して
エクスプローラーを殺してリネームが成功するならエクスプローラーが原因と
言えるんじゃないでしょうか

引用返信 編集キー/
■90647 / inTopicNo.8)  Re[4]: フォルダーをリネームする時にエラーが出る
□投稿者/ キングダム (15回)-(2019/03/31(Sun) 20:57:13)
No90646 (キングダム さん) に返信

仮にエクスプローラーが原因だったとして
どう対応するか課題は残りますね

スリープ挟んでしばらくリトライしてればうまくいくのか
いくら待ってもエクスプローラーはアクセス権を譲らないのか

エクスプローラーをぶち殺すようなプログラムは野蛮ですし
そのへんは試してみてから考えるのが良いかもしれないですね
リトライしたらあっさりできるかもしれいないですし
引用返信 編集キー/
■90648 / inTopicNo.9)  Re[5]: フォルダーをリネームする時にエラーが出る
□投稿者/ めがね (5回)-(2019/03/31(Sun) 22:47:19)
ありがとうございます。
仰る通り、エクスプローラーが原因のような気がします。
ちなみに、リネームできないものは何度リトライしてもできません。

それなら、コマンドプロンプト経由でエクスプローラーを操作して
リネームすることってできないのでしょうか?

引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ