我想創建算法,爲要添加到主目錄的新文件生成名稱。 此目錄中的所有文件必須具有唯一的名稱,並以「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