目录的GetTempFileName函数



.NET Framework定义了一个System.IO.Path.GetTempFileName方法,该方法保证它生成的临时文件名是唯一的。不过,据我所知,尽管极不可能,但这个文件名可能与同一路径上的目录名相同,这意味着我不能假设通过取该文件的名称,删除它,并创建一个同名目录,我将拥有一个与任何其他目录具有唯一名称的目录。另外,我无法指定GetTempFileName创建其临时文件的路径。对于目录,似乎没有与GetTempFileName等效的函数。

是否有GetTempFileName等效于创建唯一目录?如果不是,在指定位置创建唯一目录的最佳方法是什么(即,我指定创建唯一目录所用的路径)?

您可以将Guid.NewGuid().ToString()用于该任务。

Guid有效,但如果您想要更短的目录名(8.3格式),可以使用GetRandomFileName():

    public static string GetRandomTempPath()
    {
        var tempDir = System.IO.Path.GetTempPath();
        string fullPath;
        do
        {
            var randomName = System.IO.Path.GetRandomFileName();
            fullPath = System.IO.Path.Combine(tempDir, randomName);
        }
        while (Directory.Exists(fullPath));
        return fullPath;
    }
string basePath = @"c:test";    // or use Path.GetTempPath
string tempPath;
do
{
    tempPath = Path.Combine(basePath, Guid.NewGuid().ToString("N"));
} while (Directory.Exists(tempPath));
try
{
    Directory.CreateDirectory(tempPath);
}
catch
{
    // something went wrong!
}

您可以使用Guid创建唯一的名称。

相关内容

  • 没有找到相关文章

最新更新