2010-03-05 48 views
1

我的Java程序需要删除由程序创建的“Shell.Explorer.1”ActiveX控件创建的所有临时Internet文件。Windows上的“Temporary Internet Files”文件夹

这样做的最好方法是什么?

如果我去工具 - > Internet Explorer中的Internet选项,点击常规标签上的浏览历史记录设置按钮,然后单击查看文件按钮,它需要我使用Windows Explorer这个文件夹:

C:\Documents and Settings\<user-name>\Local Settings\Temporary Internet Files 

然后我看到“文件”列表,虽然我不确定它们是否真的是文件。我如何使用Java删除这些内容?

但是,当我呼叫file.listFiles()其中file是上面列出的目录时,我没有看到我在Windows资源管理器中看到的任何文件。我看到我认为是一些隐藏的文件夹。

回答

2

Temporary Internet Files是一个假装文件夹。您在资源管理器中看到的视图是磁盘上实际文件的组合,它们位于不可预知的命名子文件夹中,以及存储关于文件的元数据的Wininet Url缓存容器(例如,它们来自哪个URL,到期日期等) 。如果你使用文件系统API,你会得到实际的东西。但是,如果您使用shell API,则可以按照自己想要的方式枚举它们。尝试从SHParseDisplayName()开始并从那里开始。而且,是的,不知道如何在Java中做到这一点,但是应该有一些方法可以从Java调用win32函数,对吧?

0

Windows将Temporary Internet Files文件夹(和其他文件夹)与普通文件夹区别对待。您必须查阅Windows文档以了解具体情况,但正如您发现的那样,您在Windows资源管理器中看到的文件夹内容与您的Java程序找到的内容不匹配。

您可以使用命令提示符浏览目录结构以查看Java程序将看到的内容(即隐藏文件夹等)。还有一个特殊的index.dat文件,当您需要查找具有某些属性的文件时可能会有所帮助。还有:reverse engineering index.dat

0

正如其他人所说,Temporary Internet Files是一个伪文件夹,其内容由Internet Explorer/WinINet管理。据我所知,没有任何方法可以关联哪些程序创建了哪些文件(除非您正在寻找特定的域或最后修改的日期)。 WinINet does provide some limited functionality for managing these files,但我认为在那附近散步是不好的做法。为什么你(认为你)需要这样做?

相关问题