0

次のコードを使用してディレクトリの名前を変更しようとすると:

  try
  {
        System.IO.Directory.Move(oldPath, newPath);
  }
  catch (System.IO.IOException e2)
  {
        Console.WriteLine(e2.Message);
  }

次の例外が発生します: 別のプロセスで使用されているため、プロセスはファイルにアクセスできません。

  1. そもそも「ファイル」と言う理由がわかりません。
  2. また、ディレクトリは空です。それはどのファイルを参照していますか?
  3. 最後に、例外なくディレクトリの名前を変更する方法を教えてください。

更新:例外の理由を見つけたと思います。Google ドライブにあるファイル/フォルダーのファイル/フォルダー名の名前を変更しようとしているためです。Google ドライブ アプリケーションは、それを使用するもう 1 つのプロセスです。Google ドライブのフォルダの名前を変更するソリューションはありますか? しかし、奇妙なことに、C# を使用して Google ドライブにあるファイルの名前を変更しようとすると、この例外が発生しません。

ありがとう!

4

3 に答える 3

1

あなたのフォルダは別のプロセスで使用されているようです。そのフォルダーを使用するエクスプローラーまたは他のプログラムを閉じてみてください。何も解決しない場合は、マシンを再起動してみてください。それでも解決しない場合は、 Unlockerを使用してフォルダーを別のプロセスの使用から解放することを検討してください。マシンの再起動後にシステム以外のフォルダーが占有されていると、奇妙なことに注意してください。

于 2012-08-22T09:35:54.570 に答える
0
  1. 基になるコマンドがおそらくディレクトリとファイルの両方に対して一般的な移動コマンドを使用しており、ローカライズされたエラー文字列にファイルという単語が含まれているため、「ファイル」と表示されます。
  2. ディレクトリが空の場合でも、アプリケーションで「開いている」場合は、編集のためにロックできます(ディレクトリでエクスプローラーウィンドウを開いていますか、コマンドプロンプトの現在のディレクトリは移動したいディレクトリに設定されていますか/消去)?
  3. 残念ながら、問題のあるプロセスをプログラムで強制終了したくない限り、できることはあまりありません。

Process Explorer を使用して、そのフォルダーをロックしているプロセスを見つけることができます。詳細については、 http://windowsxp.mvps.org/processlock.htmを参照してください。

于 2012-08-22T09:36:55.413 に答える
0

1 newPath が存在しないことを確認する

http://msdn.microsoft.com/en-us/library/system.io.directory.move.aspx

2 ディレクトリに開いているファイルが含まれていないことを確認します

于 2012-08-22T09:37:01.403 に答える