增加文件名

时间:2010-07-27 06:42:59

标签: c# optimization

我想创建算法,为我想要添加到主目录的新文件生成名称。 此目录中的所有文件都必须具有唯一名称,并以“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);

3 个答案:

答案 0 :(得分:2)

如果您不担心文件名的其余部分(除了以“myFile”开头),那么您只需创建一个GUID并将其连接到worg“myFile”。这是最简单的方法。另一种方式可能正在使用系统标记并将其作为字符串添加到单词“myFile”。

答案 1 :(得分:2)

如果您构建文件名以便按字母顺序排序

base000001
base000002
...
base000997

然后你可以得到一个目录列表,然后到列表的末尾找到最后一个文件。

但请注意:如果程序的两个实例同时运行会发生什么?在现有文件的测试和创建之间有一点机会之窗。

答案 2 :(得分:1)