生成一个带有括号内数字的文件名
本文关键字:数字 文件名 一个 | 更新日期: 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)
。