将文件复制到tmp文件夹的推荐方法是什么?

时间:2011-10-26 14:05:27

标签: c# .net file temp

我需要将文件复制到tmp位置才能操作它。我需要确保我始终可以复制文件。

  • 以下代码是否正确?
  • 是否确保永远不会尝试复制到已存在的位置?
  • 有失败的机会吗? (我应该抓住任何例外情况)

我使用的代码如下:

string tmpFile = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());

提前致谢。

3 个答案:

答案 0 :(得分:3)

或许使用Path.GetTempFileName代替?

string tmpFile = Path.GetTempFileName();

该方法可能会抛出IOException,所以你应该在某个时候抓住它。具体取决于该代码存在的上下文。

请注意,此方法还会在磁盘上创建文件,因此不存在其他进程在此调用与代码写入文件的时间之间创建同名文件的风险。

答案 1 :(得分:2)

  • 您的代码正在运行(虽然不是您想做的,请参阅下一点)
  • 不,GetRandomFileName不检查名称的唯一性,我建议改用GetTempFileName()。
  • 您不必在此处查看,但是当您开始使用该文件(写入它)时,可能会发生错误(例如,完整磁盘)。如果使用GetTempFileName(),则需要开始检查错误,因为它在无法创建文件时返回错误,或者没有可用的唯一名称。

答案 2 :(得分:1)

出了什么问题:

string tmpFile = Path.GetTempFileName();

来自Path.GetTempFileName()上的MSDN:

  

在磁盘上创建一个唯一命名的零字节临时文件并返回   该文件的完整路径。该文件的扩展名为.TMP。

它确实无法获取已存在的文件以及有关失败方案的问题,如果它无法创建此类文件:

  

如果习惯了,GetTempFileName方法将引发IOException   创建超过65535个文件而不删除以前的临时文件   文件。

     

如果没有可用的唯一临时文件名,GetTempFileName方法将引发IOException。要解决此错误,请删除   所有不需要的临时文件。