.net 特定分区上的临时文件名?

.net 特定分区上的临时文件名?,.net,temporary-files,.net,Temporary Files,我知道Path.GetTempFileName()以及如何获取临时文件夹(通常位于C驱动器上) 但是如何在特定分区上获取临时文件名呢?我想作为一种解决方法,我会做一些类似于targetBaseDir/temp.tmp的事情,然后在完成后执行File.Move。为什么不创建自己的GetTempFilePath方法呢 像这样的 string GetTempFilePath(string basePath, string extension) { return Path.Combine(bas

我知道
Path.GetTempFileName()
以及如何获取临时文件夹(通常位于C驱动器上)


但是如何在特定分区上获取临时文件名呢?我想作为一种解决方法,我会做一些类似于targetBaseDir/temp.tmp的事情,然后在完成后执行File.Move。

为什么不创建自己的GetTempFilePath方法呢

像这样的

string GetTempFilePath(string basePath, string extension)
{
    return Path.Combine(basePath, Guid.NewGuid().ToString()+"."+extension);
}

//Usage
GetTempFilePath("E:\\", "tmp");

//Output
//E:\e2e4873e-daf5-41b6-bdc5-2afec61921e2.tmp

或者您可以使用
System.IO.Path.GetTempFileName()

所使用的本机方法。请您进一步解释一下,您到底想做什么?@披头士:他们想创建一个临时文件,然后写入该文件进行重命名,以避免保存时对已有的文件造成重击。由于只能在单个卷(而不是分区:-)上执行原子移动,因此无法充分利用
GetTempFileName()
,它将使用
$Env:Temp
作为文件的位置。但是,如果已经存在其他文件,那么创建唯一命名文件的逻辑可能会有所帮助,这就是为什么我认为有人会问这个问题。@Johannes:谢谢你的回答。这和我猜的是同一件事,但我想在做任何决定之前确定一下comment@JohannesRössel:这正是我的理由。我会使用
Path.GetRandomFileName
而不是
Guid.NewGuid
,但如果不是这样的话,答案会很好;)