Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将文件复制到tmp文件夹的推荐方法是什么?_C#_.net_File_Temp - Fatal编程技术网

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

C# 将文件复制到tmp文件夹的推荐方法是什么?,c#,.net,file,temp,C#,.net,File,Temp,我需要将一个文件复制到tmp位置,以便对其进行操作。我需要确保我始终可以复制该文件 以下代码正确吗 它是否确保从不尝试复制到已存在的位置 有失败的机会吗?(我是否应该捕捉任何例外情况) 我使用的代码如下所示: string tmpFile = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); 提前谢谢。也许可以改用 该方法可能会抛出IOException,因此您可能会在某个时刻捕捉到它。确切位置更多地取决于此代码所在的上

我需要将一个文件复制到tmp位置,以便对其进行操作。我需要确保我始终可以复制该文件

  • 以下代码正确吗
  • 它是否确保从不尝试复制到已存在的位置
  • 有失败的机会吗?(我是否应该捕捉任何例外情况)
我使用的代码如下所示:

string tmpFile = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
提前谢谢。

也许可以改用

该方法可能会抛出
IOException
,因此您可能会在某个时刻捕捉到它。确切位置更多地取决于此代码所在的上下文

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

有什么问题:

string tmpFile = Path.GetTempFileName();
从MSDN开始:

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

它确实可以确保您不会得到已经存在的文件,如果无法创建这样的文件,那么关于您关于故障场景的问题:

GetTempFileName方法如果用于 创建超过65535个文件而不删除以前的临时文件 档案

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

  • 您的代码正在运行(尽管它不能满足您的要求,请参阅下一点)
  • 不,GetRandomFileName不检查名称的唯一性,我建议改为使用GetTempFileName()
  • 您不必在此处进行检查,但当您开始使用文件(写入文件)时,可能会发生错误(例如,磁盘已满)。如果使用GetTempFileName(),则确实需要开始检查错误,因为当无法创建文件或没有可用的唯一名称时,它会返回错误

Path.GetTempFileName()我想这就是您所需要的全部。您可能需要重新表述您的问题,因为代码中没有复制操作,您只想知道如何获取唯一命名临时文件的文件名。GetTempFileName是您需要的。至于限制,有两个:如果使用GetTempFileName方法创建超过65535个文件而不删除以前的临时文件,则会引发IOException。如果没有唯一的临时文件名可用,GetTempFileName方法将引发IOException。要解决此错误,请删除所有不需要的临时文件。
string tmpFile = Path.GetTempFileName();