目录的GetTempFileName函数?

Jez*_*Jez 16 .net c# directory file

.NET Framework定义了一种System.IO.Path.GetTempFileName方法,可以保证它生成的临时文件名是唯一的.据我所知,虽然极不可能,但这个文件名可能与同一路径上的目录名相同,这意味着我不能假设通过获取该文件的名称,删除它,并创建一个在同名目录中,我将拥有一个具有唯一名称的目录到任何其他目录.更重要的是,我无法指定GetTempFileName应该在其下创建临时文件的路径.似乎没有与GetTempFileName目录相同的功能.

是否有GetTempFileName创建唯一目录的等价物?如果没有,在指定位置创建唯一目录的最佳方法是什么(即.我指定创建唯一目录的路径)?

Dan*_*elB 24

你可以Guid.NewGuid().ToString()用于那个任务.

  • 是的,这可能就是这样.使用`Path.Combine(Path.GetTempPath(),Guid.NewGuid().ToString())` (7认同)

EM0*_*EM0 11

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;
    }
Run Code Online (Sandbox Code Playgroud)


Luk*_*keH 7

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!
}
Run Code Online (Sandbox Code Playgroud)