我想从一些 C 在 Windows 中创建一个唯一的临时目录
代码(不是 C++ 或 C#)。我想这样做,以便我可以放置一些温度
目录中的文件,然后在完成后轻松将它们全部删除
(通过递归删除目录)。
我本质上是在寻找与linux相当的东西mkdtemp http://pubs.opengroup.org/onlinepubs/9699919799/functions/mkdtemp.html功能。有一个C#答案here https://stackoverflow.com/questions/278439/creating-a-temporary-directory-in-windows,以及回应这
问题 https://stackoverflow.com/questions/3379956/how-to-create-a-temporary-directory-in-c建议使用Boost。但由于我使用的是 C,所以这些解决方案不起作用
为我。
到目前为止我能想到的最好的办法就是使用GetTempFileName http://msdn.microsoft.com/en-us/library/aa364991(v=vs.85).aspx其次是CreateDirectory http://msdn.microsoft.com/en-us/library/aa363855(v=vs.85).aspx,
但问题是如果我问GetTempFileName http://msdn.microsoft.com/en-us/library/aa364991(v=vs.85).aspx要创建唯一的文件名,它还将创建该文件(我
不想,因为我想创建一个目录)。
相关的,有GetTempPath http://msdn.microsoft.com/en-us/library/aa364992(v=vs.85).aspx,
它从环境中返回用户临时文件夹的位置
变量 - 但因为我想创建自己的目录,所以我可以
稍后安全删除,我仍然需要在任何目录中创建一个目录
它将返回的路径。
看起来如果我想创建一个唯一的目录,我必须这样做
创建一个临时文件,获取名称,删除它,然后创建一个
具有相同名称的目录 - 这听起来很混乱。
还有其他想法吗?
你可以用什么GetTempPath
返回与 Guid 连接以确保目录的唯一性。您可以使用创建指南Uuid创建 http://msdn.microsoft.com/en-us/library/aa379205%28v=vs.85%29.aspx or CoCreateGuid 函数 http://msdn.microsoft.com/en-us/library/ms688568%28v=vs.85%29.aspx.
要递归删除目录,这里有一个纯 C 语言的示例:如何递归删除目录? http://www.cplusplus.com/forum/windows/27121/基于 FindFirstFile、FindNextFile、DeleteFile 和删除目录 http://msdn.microsoft.com/en-us/library/ms891470.aspx.
还有SH文件操作 http://msdn.microsoft.com/en-us/library/bb762164%28v=vs.85%29.aspx但它更重量级,并且基于 Windows Shell 函数,并且并不总是需要 Shell DLL,尤其是在编写服务器代码时。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)