C#最佳实践:编写“临时”文件以供下载:放在应用程序的环境文件夹或临时文件夹中

基本上,我想知道下载文件的下列问题是否有最佳实践,不仅仅是临时使用,而是最终将它们移动到应用程序文件夹。 我面临一些选择:

//Option 1 - Random file String tempfile = Path.GetTempFileName(); WriteData(tempfile); File.Move(tempfile, Path.Combine(Environment.CurrentDirectory, filename); //Option 2 - Temp Path + Random file name String tempfile = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); WriteData(tempfile); File.Move(tempfile, Path.Combine(Environment.CurrentDirectory, filename); //Option 3 - Temp Path + real file name String tempfile = Path.Combine(Path.GetTempPath(), filename); WriteData(tempfile); File.Move(tempfile, Path.Combine(Environment.CurrentDirectory, filename); //Option 4 - Temp Application Path + Random file name String tempfile = Path.Combine(Environment.CurrentDirectory, Settings.Default.DownloadFolder, Path.GetRandomFileName()); WriteData(tempfile); File.Move(tempfile, Path.Combine(Environment.CurrentDirectory, filename); //Optioin 5 - Temp Application Path + file name String tempfile = Path.Combine(Environment.CurrentDirectory, Settings.Default.DownloadFolder, filename); WriteData(tempfile); File.Move(tempfile, Path.Combine(Environment.CurrentDirectory, filename); 

因为当时正在使用某些文件,所以我无法直接将文件写入最终的位置。 它必须去临时区域……

你的第一个选择非常好。 它非常清晰,有据可查,记录在案。

 //Option 1 - Random file String tempfile = Path.GetTempFileName(); WriteData(tempfile); File.Move(tempfile, Path.Combine(Environment.CurrentDirectory, filename); 

除了Environment.CurrentDirectory位。 正如Astander在这个答案中指出的那样你可能想要使用AppDomain.BaseDirectory,因为对话框可以改变 Environment.CurrentDirectory

//选项4 – 临时应用程序路径+随机文件名

 String tempfile = Path.Combine(Environment.CurrentDirectory, Settings.Default.DownloadFolder, Path.GetRandomFileName()); WriteData(tempfile); File.Move(tempfile, Path.Combine(Environment.CurrentDirectory, filename); 

是最好的选择,因为它不会引发SecurityExceptions或其他人可以的IOException

这个胜利? 网? WPF? 什么? 为什么不将它存储在应用程序用户的配置文件中?