gpt4 book ai didi

在 Windows 中从纯 C 创建一个唯一的临时目录

转载 作者:可可西里 更新时间:2023-11-01 12:38:07 27 4
gpt4 key购买 nike

我想在 Windows 中从一些 C 创建一个唯一的临时目录代码(不是 C++ 或 C#)。我想这样做,这样我就可以放一些温度目录中的文件,然后在完成后轻松删除它们(通过递归删除目录)。

我基本上是在寻找 linux 的等价物 mkdtemp功能。有一个 C# 答案 here , 以及对 thisquestion 的回应建议使用升压。但是因为我使用的是 C,所以这些解决方案不起作用对我来说。

到目前为止我能想到的最好的方法是使用 GetTempFileName其次是 CreateDirectory ,但问题是如果我问 GetTempFileName要创建一个唯一的文件名,它还会创建文件(我不想,因为我想创建一个目录)。

相关的还有 GetTempPath ,从环境中返回用户临时文件夹的位置变量 - 但因为我想创建自己的目录,所以我可以稍后安全删除,我仍然需要在任何内部创建一个目录它将返回的路径。

看起来如果我想创建一个唯一的目录,我将不得不创建一个临时文件,获取名称,删除它,然后创建一个同名目录 - 听起来很乱。还有其他想法吗?

最佳答案

您可以使用 GetTempPath 返回的内容与 Guid 连接以确保目录的唯一性。您可以使用 UuidCreate 创建一个 Guid或 CoCreateGuid Function .

要递归删除目录,这里有纯C的例子:How to remove directory recursively?基于 FindFirstFile、FindNextFile、DeleteFile 和 RemoveDirectory .

还有SHFileOperation但它更重量级并且基于 Windows Shell 函数,并不总是需要 Shell DLL,尤其是在您编写服务器代码时。

关于在 Windows 中从纯 C 创建一个唯一的临时目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6287475/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com