C# - ファイル名を変更する

ファイル名を変更するには File.Move()メソッドを使用します。

ファイル名の変更方法

File.Move()メソッド の引数に 変更前のファイルパスと、変更後のファイルパスを渡します。変更後のファイルと同名のファイルがあると例外が発生しますが、第三引数(overwrite)に true を渡すと上書きになります。
using System.IO;

// 同名ファイルがあるとき、例外発生
File.Move("変更前のファイルパス", "変更後のファイルパス");

// 同名ファイルがあるとき、上書き
File.Move("変更前のファイルパス", "変更後のファイルパス", true);
次のコードは testフォルダー内の old.txt を new.txt に変更します。
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);

参考資料

検証環境