生成一个带有括号内数字的文件名

本文关键字:数字 文件名 一个 | 更新日期: 2023-09-27 18:08:31

我正在使用asp.net项目,用户可以将文件上传到服务器。我想用它的原始名称保存文件,但如果同名的文件已经存在,我怎么能像windows那样在括号中生成一个带有数字的文件名?

文件被上传到一个特定的文件夹,并以其客户端名称本身保存。因此,如果上传了一个名为myimage.jpg的文件,并且服务器中已经存在同名的文件,则需要将其重命名为myimage(1).jpg,或者如果存在'myimage.jpg'到'myimage(n).jpg',则需要将其重命名为myimage(n+1).jpg。

搜索和生成文件名的最佳方式是什么?我的第一个猜测是使用linq与正则表达式DirectoryInfo.EnumerateFiles(),但这是一个好方法吗?

生成一个带有括号内数字的文件名

如果不需要按上传日期/时间排序显示具有相同原始名称的文件,则只需在文件名后面附加system . guide . newguid (). tostring()。

public static object lockObject = new object();
void UploadFile(...)
{
    //-- other code
    lock (lockObject)
    {
        int i = 1;
        string saveFileAs = "MyFile.txt";
        while (File.Exists(saveFileAs))
        {
           string fileNameWithoutExt = Path.GetFileNameWithoutExtension(saveFileAs);
           string ext = Path.GetExtension(saveFileAs)
           saveFileAs = String.Concat(fileNameWithoutExt, "(", i.ToString(), ")", ext);
           i++;
        }
        //-- Now you can save the file.
    }
}

你不需要LINQ或regex

如果原文件名存在,则在文件名后加上(1)
如果存在,则在(原)名称后添加(2)