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

发布于 2024-12-11 18:17:02 字数 273 浏览 0 评论 0原文

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

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

我正在使用的代码如下:

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

提前致谢。

I need to copy a file to a tmp location in order to manipulate it. I need to ensure that I always can copy the file.

  • Is the following code correct?
  • Does it ensure that never try to copy to a location that already exists?
  • Is there any chance of failure? (Should I catch any exceptions)

The code that I am using is the following:

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

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

ペ泪落弦音 2024-12-18 18:17:02

也许使用 Path.GetTempFileName< /a> 代替?

string tmpFile = Path.GetTempFileName();

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

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

Perhaps use Path.GetTempFileName instead?

string tmpFile = Path.GetTempFileName();

That method may throw IOException so you should probably catch that at some point. Exactly where depends more on the context in which this code exists.

Note that this method also creates the file on disk, so there is no risk that some other process creates an identically named file between this call and the time when the file is written to by your code.

我为君王 2024-12-18 18:17:02
  • 您的代码正在工作(尽管它没有执行您想要的操作,请参阅下一点)
  • 不,GetRandomFileName 不会检查名称的唯一性,我建议使用 GetTempFileName() 代替。
  • 您不必在此处进行检查,但是当您开始使用该文件(写入该文件)时,可能会发生错误(例如,磁盘已满)。如果您使用 GetTempFileName(),您确实需要开始检查错误,因为当它无法创建文件或没有可用的唯一名称时,它会返回错误。
  • Your code is working (although is does not do what you want, see next point)
  • No, GetRandomFileName doest not check for uniqueness of the name, I would advise using GetTempFileName() instead.
  • You do not have to check here, but when you start using the file (writing to it) errors maybe occur (e.g. full disk). If you use GetTempFileName() you do need to start checking for errors as it returns an error when it cannot create the file or there is no available unique name.
月下客 2024-12-18 18:17:02

有什么问题:

string tmpFile = Path.GetTempFileName();

来自 MSDN Path.GetTempFileName()< /a>:

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

它确实确保您不会获得已经存在的文件,并且关于您有关故障场景的问题,如果它无法创建这样的文件:

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

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

What's wrong with:

string tmpFile = Path.GetTempFileName();

From MSDN on Path.GetTempFileName():

Creates a uniquely named, zero-byte temporary file on disk and returns
the full path of that file. The file has a .TMP extension.

It does ensure that you don't get a file that already exists and with regard to your question about failure scenarios, if it cannot create such a file:

The GetTempFileName method will raise an IOException if it is used to
create more than 65535 files without deleting previous temporary
files.

The GetTempFileName method will raise an IOException if no unique temporary file name is available. To resolve this error, delete
all unneeded temporary files.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文