Je veux créer un algorithme, pour générer un nom pour le nouveau fichier que je veux ajouter au répertoire principal. Tous les fichiers de ce répertoire doivent avoir un nom unique et commencer par "myFile"Increment filename
Que pensez-vous de cet algorithme? Puis-je l'optimiser?
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);
Pour l'algorithme j'aller avec GUID comme Kangkan suggéré. Mais en regardant votre code, il semble que vous essayez de faire quelque chose que Windows peut faire facilement pour vous. Sur Windows XP et les versions ultérieures de Windows, il est possible de renommer plusieurs fichiers à la fois via Explorer en sélectionnant les fichiers à renommer, puis en appuyant sur la touche F2. Juste pour donner un nouveau nom et appuyez sur Entrée. Tous les fichiers seront renommés et suivis d'un nombre incrémenté entre parenthèses. – KeesDijk