我想在 Windows 中从一些 C 创建一个唯一的临时目录 代码(不是 C++ 或 C#)。我想这样做,这样我就可以放一些温度 目录中的文件,然后在完成后轻松删除它们 (通过递归删除目录)。
我基本上是在寻找 linux 的等价物
mkdtemp
功能。有一个 C# 答案 here , 以及对 this
question 的回应
建议使用升压。但是因为我使用的是 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/