我的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资源管理器中看到的任何文件。我看到我认为是一些隐藏的文件夹。
答案 0 :(得分:2)
Temporary Internet Files是一个伪装文件夹。您在资源管理器中看到的视图是磁盘上的实际文件(存储在严重无法预测的命名子文件夹中)和存储文件元数据的Wininet Url缓存容器(如它们来自哪个URL,到期日期等)的组合。如果您使用文件系统API,您将获得实际存在的内容。但是,如果使用shell API,则可以按照自己的方式枚举它们。尝试从SHParseDisplayName()开始并从那里开始。并且,是的,不知道怎么用Java做,但应该有一些方法从Java调用win32函数,对吧?
答案 1 :(得分:0)
Windows对Temporary Internet Files
文件夹(以及其他文件夹)的处理方式与常规文件夹不同。您必须查阅Windows文档以了解具体信息,但正如您所了解的那样,您在Windows资源管理器中看到的该文件夹的内容与您的Java程序找不到的内容不相符。
您可以使用命令提示符浏览目录结构,以查看Java程序将看到的内容(即隐藏文件夹等)。当您需要查找具有特定属性的文件时,还有一个特殊的index.dat
文件可能会有所帮助。
答案 2 :(得分:0)
正如其他人所说,Temporary Internet Files是一个伪文件夹,其内容由Internet Explorer / WinINet管理。据我所知,没有任何方法可以关联哪些文件是由哪些程序创建的(除非您正在寻找特定的域或最后修改日期)。 WinINet does provide some limited functionality for managing these files,但我认为在那里乱逛是不好的做法。为什么你(想你)需要这样做?