[ VB.NET / C# ] ファイル名も上書きしたい ( File.Move )

Pocket

Windows の場合は、Unix 系 OS とは異なりファイル名の大文字と小文字は区別されません。NAME.TXT も name.txt も同一のファイルとみなされてしまいます。

スポンサーリンク

ファイルの上書きコピー(File.Copy)

例えば、d:\name.txt が既に存在している場合は、次のサンプルコードではファイルの内容は上書きされますが、ファイル名は小文字のまま変更されません。

VB.NET

Dim src As String = "C:\NAME.TXT"
Dim dst As String = "D:\NAME.TXT"

' ファイルは上書きコピーされるが、ファイル名は小文字のまま変わらない
File.Copy(src, dst, True)

C#

string src = @"C:\NAME.TXT";
string dst = @"D:\NAME.TXT"; // コピー先を大文字のファイル名にしても効果なし

// ファイルは上書きコピーされるが、ファイル名は小文字のまま変わらない
File.Copy(src, dst, true);

ファイル名も変更する(File.Move)

ファイル名も変更するには、上書きコピーではなく一旦削除後に新規コピーを行うか、上書きコピー後にファイル名を変更する必要があります。サンプルコードは以下の通りです。

VB.NET

Dim src As String = "C:\NAME.TXT"
Dim dst As String = "D:\NAME.TXT"

' 1.または2.の処理を追加する

' 1.一旦削除する
File.Delete(dst)

' ファイルコピー
File.Copy(src, dst, True)

' 2.ファイル名を大文字に変換する(移動する)
File.Move(dst, dst)

C#

string src = @"C:\NAME.TXT";
string dst = @"D:\NAME.TXT"; // コピー先を大文字のファイル名にする

// 1.または2.の処理を追加する

// 1.一旦削除
File.Delete(dst);

// ファイルコピー
File.Copy(src, dst, true);

// 2.ファイル名を大文字に変換する(移動する)
File.Move(dst, dst);
スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *