我的Java程序需要删除由程序创建的"Shell.Explorer.1“ActiveX控件创建的所有临时internet文件。
做到这一点的最好方法是什么?
如果我在Internet Explorer中转到工具->Internet选项,单击常规选项卡上的浏览历史记录设置按钮,然后单击查看文件按钮,我将使用Windows资源管理器转到此文件夹:
C:\Documents and Settings\<user-name>\Local Settings\Temporary Internet Files然后我看到了“文件”的列表,尽管我不确定它们是否真的是文件。如何使用Java删除这些内容?
但是,当我调用file.listFiles(),其中file是上面列出的目录时,我没有看到任何我在Windows Explorer中看到的文件。我看到了一些我认为是隐藏的文件夹。
发布于 2010-03-06 16:21:08
Temporary Internet Files是一个假装文件夹。您在资源管理器中看到的视图是磁盘上的实际文件和Wininet Url缓存容器的组合,前者位于安全且不可预测的子文件夹中,后者存储有关文件的元数据(如它们来自的URL、到期日期等)。如果您使用文件系统API,您将获得实际存在的内容。但是,如果您使用shell API,则可以按您想要的方式枚举它们。尝试从SHParseDisplayName()开始,然后从那里开始。而且,是的,我不知道如何在Java中做到这一点,但是应该有一些方法可以从Java中调用win32函数,对吧?
发布于 2010-03-06 12:34:33
Windows对Temporary Internet Files文件夹(以及其他文件夹)的处理方式与常规文件夹不同。您必须查阅Windows文档了解细节,但正如您已经发现的那样,您在Windows资源管理器中看到的该文件夹的内容与您的Java程序找到的内容不匹配。
您可以使用命令提示符浏览目录结构,以查看Java程序将看到的内容(即隐藏文件夹等)。还有一个特殊的index.dat文件,当您需要查找具有某些属性的文件时,它可能会很有帮助。
另请参阅:reverse engineering index.dat。
发布于 2010-03-08 05:16:28
正如其他人所说,临时Internet文件是一个伪文件夹,其内容由Internet Explorer / WinINet管理。据我所知,没有任何方法可以关联哪些文件是由哪些程序创建的(除非您正在寻找特定的域或最后修改日期)。WinINet does provide some limited functionality for managing these files,但我认为在那里乱搞是不好的做法。为什么你(认为你)需要这样做?
https://stackoverflow.com/questions/2388395
复制相似问题