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

本文关键字:方法 是什么 文件夹 文件 复制 tmp | 更新日期: 2023-09-27 18:12:22

我需要将一个文件复制到tmp位置以便操作它。我需要确保我总是可以复制文件。

  • 下面的代码正确吗?
  • 它是否确保永远不会尝试复制到已经存在的位置?
  • 有失败的可能吗?(我应该捕捉任何异常)

我使用的代码如下:

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

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

也许用Path.GetTempFileName代替?

string tmpFile = Path.GetTempFileName();

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

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

  • 你的代码正在工作(虽然它不做你想要的,见下一点)
  • 不,GetRandomFileName不检查名称的唯一性,我建议使用GetTempFileName()代替。
  • 你不必在这里检查,但是当你开始使用文件(写入它)错误可能会发生(例如满磁盘)。如果你使用GetTempFileName(),你需要开始检查错误,因为当它不能创建文件或没有可用的唯一名称时,它会返回一个错误。

怎么了

string tmpFile = Path.GetTempFileName();

From MSDN on Path.GetTempFileName():

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

如果它不能创建这样的文件,它可以确保您不会得到一个已经存在的文件,并且关于您关于失败场景的问题:

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

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