在Windows中保存临时文件的正确位置?

Sco*_*ott 47 c# windows

我有一个文件需要写入临时位置,Windows中最好的位置是什么?这个文件不需要移动,因为我需要阅读它几次并在关闭程序时将其处理掉.

tan*_*ius 44

使用

Path.GetTempPath();
Run Code Online (Sandbox Code Playgroud)

要么

Path.GetTempFileName();
Run Code Online (Sandbox Code Playgroud)

正如评论员指出的那样,GetTempFileName()不是线程安全的 - 但您可以根据GUID构造唯一的文件名.

  • 请注意,由于固有的竞争条件,可能需要多次调用GetTenpFileName(其他东西可能会在从GetTempFileName返回和打开文件之间创建相同的文件). (4认同)

EKS*_*EKS 11

其他人打败了我

System.IO.Path.GetTempPath()
Run Code Online (Sandbox Code Playgroud)

但您也可以查看应用程序数据文件夹.这将允许您更好地控制您的文件,例如为所有用户共享1或每用户1的能力.

Application.CommonAppDataPath
Application.UserAppDataPath
Run Code Online (Sandbox Code Playgroud)


Mar*_*Pim 7

使用Windows API函数GetTempPath()System.IO.Path(参见MSDN)

using System.IO

...

myTempPath = Path.GetTempPath();
Run Code Online (Sandbox Code Playgroud)

您应该知道在程序执行期间文件系统可能会发生变化.Temp路径可能会更改(不太可能,已授予),或者您的临时文件可能已被用户移动或删除.

准备好每次访问它时检查它的存在,并在没有找到优雅的情况下处理案例.