Ответ 1
Вы можете использовать Guid.NewGuid().ToString()
для этой задачи.
.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.