.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创建唯一的名称。