トップ回答者
フォルダ名の変更について

質問
-
こんにちは。
Windows 7 Home Premium
Visual Studio 2010 Pro C#
を使用しています。
Directory.Move(OldFolderName, NewFolderName);
でフォルダ名を変換したいのですが、単に大文字・小文字の変換(例えば"BOOK"から"book"へ)の場合は下記の例外エラーが発生します。
「System.IO.IOException: ソース パスとターゲット パスを同じにすることはできません。」
意味はわかりますが、Windowsのエクスプローラでは変更できますよね。
このような場合は、どうやってフォルダ名を変更すればよいのでしょうか?
よろしくお願いします。
回答
-
ディレクトリに対するDirectory.Move() では大文字小文字を区別せずに比較するためダメですが、ファイルに対するFile.Move() はそのようなチェックを行っていないために大文字小文字の変換ができるんですね。そしてWin32 APIとしてはどちらもMoveFile() なのでディレクトリに対してFile.Move()をしてみたら…ファイルが見つからないと言われてしまいますね。
第3の方法として
[DllImport("kernel32.dll", SetLastError=true)]
static extern bool MoveFile(String src, String dst);かなぁ。
- 回答としてマーク BALKAN-P 2010年12月24日 14:07
すべての返信
-
ディレクトリに対するDirectory.Move() では大文字小文字を区別せずに比較するためダメですが、ファイルに対するFile.Move() はそのようなチェックを行っていないために大文字小文字の変換ができるんですね。そしてWin32 APIとしてはどちらもMoveFile() なのでディレクトリに対してFile.Move()をしてみたら…ファイルが見つからないと言われてしまいますね。
第3の方法として
[DllImport("kernel32.dll", SetLastError=true)]
static extern bool MoveFile(String src, String dst);かなぁ。
- 回答としてマーク BALKAN-P 2010年12月24日 14:07