[英]Delete Files Efficiently Windows C++
我有一个运行时间很长的过程,它会创建一个小图像(〜1-2 kb)并将其加载到内存中。 因为它是使用APK创建的,所以我必须先将其保存到文件,然后再将其加载到内存中。 那时我不再需要该文件。 该过程可能会创建数百万个这样的文件。
我正在使用Visual C ++。NET,这是一个基于Windows的应用程序。 我想知道最好的方法。
我可以通过调用DeleteFile( http://msdn.microsoft.com/en-us/library/aa363915 (v=vs.85) .aspx )随时删除它们,但是我想知道该操作是否有开销,是否我应该使用通配符和命名约定每10k或100k文件执行一次。
这值得付出努力吗? 这里的权衡是什么?
使用FILE_ATTRIBUTE_TEMPORARY
和FILE_FLAG_DELETE_ON_CLOSE
。 他们共同告诉Windows您打算如何使用此文件。
这种组合意味着Windows会将文件保留在文件缓存中,直到您关闭它的句柄为止,此时将其从内存中删除。 您甚至不需要DeleteFile
! 由于所有语义仍然是普通文件的语义,因此您无需更改其他任何内容。
这是不值得的。 只需将文件放在用户的temp文件夹中,随手删除这些文件,就不用担心在紧急情况下(例如,应用程序崩溃)留下的文件。 无论如何,它们都将通过系统的清理过程进行清理。
原因:您已经做了很多IO:
“删除”调用将只在链中排第四-和创建第一个文件一样轻。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.