C# 将文件复制到tmp文件夹的推荐方法是什么?
我需要将一个文件复制到tmp位置,以便对其进行操作。我需要确保我始终可以复制该文件C# 将文件复制到tmp文件夹的推荐方法是什么?,c#,.net,file,temp,C#,.net,File,Temp,我需要将一个文件复制到tmp位置,以便对其进行操作。我需要确保我始终可以复制该文件 以下代码正确吗 它是否确保从不尝试复制到已存在的位置 有失败的机会吗?(我是否应该捕捉任何例外情况) 我使用的代码如下所示: string tmpFile = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); 提前谢谢。也许可以改用 该方法可能会抛出IOException,因此您可能会在某个时刻捕捉到它。确切位置更多地取决于此代码所在的上
- 以下代码正确吗
- 它是否确保从不尝试复制到已存在的位置
- 有失败的机会吗?(我是否应该捕捉任何例外情况)
string tmpFile = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
提前谢谢。也许可以改用
该方法可能会抛出IOException
,因此您可能会在某个时刻捕捉到它。确切位置更多地取决于此代码所在的上下文
请注意,此方法还将在磁盘上创建文件,因此,在该调用和代码写入文件之间,不会有其他进程创建同名文件的风险。有什么问题:
string tmpFile = Path.GetTempFileName();
从MSDN开始:
在磁盘上创建一个唯一命名的零字节临时文件并返回
该文件的完整路径。该文件的扩展名为.TMP
它确实可以确保您不会得到已经存在的文件,如果无法创建这样的文件,那么关于您关于故障场景的问题:
GetTempFileName方法如果用于
创建超过65535个文件而不删除以前的临时文件
档案
如果没有唯一的临时文件名可用,GetTempFileName方法将引发IOException。要解决此错误,请删除
所有不需要的临时文件
- 您的代码正在运行(尽管它不能满足您的要求,请参阅下一点)
- 不,GetRandomFileName不检查名称的唯一性,我建议改为使用GetTempFileName()
- 您不必在此处进行检查,但当您开始使用文件(写入文件)时,可能会发生错误(例如,磁盘已满)。如果使用GetTempFileName(),则确实需要开始检查错误,因为当无法创建文件或没有可用的唯一名称时,它会返回错误
string tmpFile = Path.GetTempFileName();