2010-03-05 87 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,但我認爲在那附近散步是不好的做法。爲什麼你(認爲你)需要這樣做?

相關問題