我正在使用以下代码随机重命名文件:
File.Move
(@"C:\Users\Desktop\Rename\file.txt", @"C:\Users\Desktop\Rename\file"
+ Helpers_Generic.GenerateRandomInt(10, 1000, driver).ToString() + ".txt");
它运行良好,但我想将其放在一种易于使用的方法中:
public static void RenameFile(string SourceFileName, string destFileName)
{
string randFileExten = GenerateRandomInt(100, 10000).ToString();
File.Move(SourceFileName, destFileName + randFileExten);
}
效果不佳,因为随机字符串出现在文件名的末尾。这里需要做什么? 谢谢。
答案 0 :(得分:2)
根据问题,您要求这样做:
public static void RenameFile(string SourceFileName, string destFileName)
{
var randFileExten = GenerateRandomInt(100, 10000);
string ext = Path.GetExtension(destFileName);
string file = Path.GetFileNameWithoutExtension(destFileName);
string folder = Path.GetDirectoryName(destFileName);
File.Move(SourceFileName, Path.Combine(folder, $"{file}{randFileExten}{ext}"));
}
但是由于您很可能希望目标文件名与源文件名(而不是唯一符)匹配,因此我认为我们可以做得更好:
public static void RenameFile(string SourceFileName, string destFolderPath)
{
var randFileExten = GenerateRandomInt(100, 10000);
string ext = Path.GetExtension(sourceFileName);
string file = Path.GetFileNameWithoutExtension(sourceFileName);
File.Move(SourceFileName, Path.Combine(destFolderPath, $"{file}{randFileExten}{ext}"));
}
请注意,第二个参数的名称不同,并且匹配的方法也不同。
对于目标文件夹相同的情况,我们还可以轻松提供重载:
public static void RenameFile(string SourceFileName)
{
string folder = Path.GetDirectoryName(SourceFileName);
RenameFile(SourceFileName, folder);
}