我想创建算法,为要添加到主目录的新文件生成名称。 此目录中的所有文件必须具有唯一的名称,并以“myFile”开头递增文件名
您对此算法有何看法?我可以优化它吗?
string startFileName="myFile.jpg";
string startDirectory="c:\MyPhotosWithSubFoldersAndWithFilesInMainDirectory";
bool fileWithThisNameExists = false;
string tempName = null;
do
{
tempName = startFileName +"_"+ counter++ + Path.GetExtension(startFileName);
foreach (var file in Directory.GetFiles(startDirectory)
{
if (Path.GetFileName(tempName) == Path.GetFileName(file))
{
fileWithThisNameExists = true;
}
}
if (fileWithThisNameExists) continue;
foreach (var directory in Directory.GetDirectories(startDirectory))
{
foreach (var file in Directory.GetFiles(directory))
{
if (Path.GetFileName(tempName) == Path.GetFileName(file))
{
fileWithThisNameExists = true;
}
}
}
} while (fileWithThisNameExists);
对于算法我会GUID的去喜欢Kangkan建议。但看着你的代码,它看起来像你正在试图做一些Windows可以轻松做到的事情。 在Windows XP及更高版本的Windows上,可以通过选择要重命名的文件,然后按F2键一次通过资源管理器重命名多个文件。 只需提供一个新名称,然后按Enter即可。所有文件将被重新命名,然后在括号后加上一个增加的数字。 – KeesDijk 2010-07-27 07:03:04