随机重命名文件方法

时间:2019-05-21 23:40:39

标签: c#

我正在使用以下代码随机重命名文件:

       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);
    }

效果不佳,因为随机字符串出现在文件名的末尾。这里需要做什么? 谢谢。

1 个答案:

答案 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);
}