ファイル名の変更方法
File.Move()メソッド の引数に 変更前のファイルパスと、変更後のファイルパスを渡します。変更後のファイルと同名のファイルがあると例外が発生しますが、第三引数(overwrite)に true を渡すと上書きになります。using System.IO;
// 同名ファイルがあるとき、例外発生
File.Move("変更前のファイルパス", "変更後のファイルパス");
// 同名ファイルがあるとき、上書き
File.Move("変更前のファイルパス", "変更後のファイルパス", true);
- 変更前のファイルが無い場合、例外「FileNotFoundException」が発生します。
using System.IO;
File.Move("./test/old.txt", "./test/new.txt");


誤った使用例
このメソッドはファイルの移動も可能なため、変更後のファイル名にも相対パス・または絶対パスの指定が必要です。次のコードは誤った使用例です。 testフォルダー内の old.txt が new.txt の名前で カレントフォルダー に 移動します。
using System.IO;
File.Move("./test/old.txt", "new.txt");
誤った使用例の改善方法
Path.GetDirectoryName() メソッドと Path.Join() メソッドを組み合わせると、期待のファイルパスを取得できます。Path.GetDirectoryName()メソッド は ファイル名を除いたパス を返し、Path.Join()メソッド は適切なディレクトリ区切り文字で 2つのパスを結合します。using System.IO;
// 変更前のファイルパス
string sourceFileName = "./test/old.txt";
// 変更前のファイルパスからファイル名を取り除き、新しいファイル名を結合
string destFileName = Path.Join(Path.GetDirectoryName(sourceFileName), "new.txt");
// 結果 = ./test/new.txt
System.Console.WriteLine(destFileName);
参考資料
- Microsoft 公式ドキュメント- File.Move メソッド
- Microsoft 公式ドキュメント- Path.GetDirectoryName メソッド
- Microsoft 公式ドキュメント- Path.Join メソッド
検証環境
- .NET 5.0
- Microsoft Visual Studio Professional 2019 Version 16.11.16
- Microsoft Windows 10 Enterprise Version 21H2 OS Build 19044.2130 Experience: Windows Feature Experience Pack 120.2212.4180.0