2012-03-29 168 views
0

我試圖獲取Temp Internet文件中的文件列表,並將每個文件的名稱追加到文本文件中。當運行此代碼時,即使在Temporary Internet Files文件夾中有少量文件,附加到日誌中的唯一東西是desktop.ini。將文本追加到文件(從目錄列表中獲取)

public static void ClearTemp(MainForm f) 
    { 

     if (UserVars.OS.Equals("WIN7")) 
     { 
      DirectoryInfo dir = new DirectoryInfo(UserVars.LOCALAPPDATA + @"\Microsoft\Windows\Temporary Internet Files"); 
      DirectoryInfo content = new DirectoryInfo(UserVars.LOCALAPPDATA + @"\Microsoft\Windows\Temporary Internet Files\Content.IE5"); 
      string path = AMSTK.AMSTKPATH + @"\log.txt"; 

       foreach (FileInfo fi in dir.GetFiles()) //get list of temp files and append to log 
       { 
        using (System.IO.StreamWriter file = File.AppendText(path)) 
        { 
        file.WriteLine("File: " + fi.Name); 
        } 
       } 
     } 

其可能發生這種情況是因爲Internet臨時文件是一個「特殊」的目錄,如果你在它刪除一切,然後它有3個文件夾中添加,content.ie5,虛擬化和低,但他們除非基本臨時互聯網文件目錄丟失,否則不可見/存在。

總的來說,這將最終刪除所有文件(該代碼實際工作,如果我用一個簡單的fi.Delete()替換所有的文件IO代碼,它確實刪除了所有的文件。我錯在這裏。

+1

[C# - 如何刪除臨時Internet文件]的可能重複(http://stackoverflow.com/questions/6521148/c-sharp-how-to-delete-temporary-internet-files) – 2012-03-29 14:26:24

+0

重申我的意見已經發布 - 獲取路徑和/或刪除文件不是問題。但是附加實際存在的文件。那篇文章告訴我我已經知道該怎麼做的一切。 – Windex 2012-03-29 14:29:18

+1

如果您在foreach外部打開log.txt文件(將foreach塊的使用塊放在該文件周圍),它會起什麼作用嗎? – Polyfun 2012-03-29 14:30:37

回答

0

據我所知,在Internet臨時文件實際存儲在Content.IE5文件夾內的幾個子文件夾。

什麼,你需要做的就是使用GetDirectories()然後爲每個子文件夾導出文件名。例如:

if (UserVars.OS.Equals("WIN7")) 
    { 
     DirectoryInfo dir = new DirectoryInfo(UserVars.LOCALAPPDATA + @"\Microsoft\Windows\Temporary Internet Files"); 
     DirectoryInfo content = new DirectoryInfo(UserVars.LOCALAPPDATA + @"\Microsoft\Windows\Temporary Internet Files\Content.IE5"); 
     string path = AMSTK.AMSTKPATH + @"\log.txt"; 

      foreach (DirectoryInfo di in content.GetDirectories()) 
      { 
       DirectoryInfo subfolder = new DirectoryInfo(UserVars.LOCALAPPDATA + @"\Microsoft\Windows\Temporary Internet Files\Content.IE5\" + di.Name);   
       foreach (FileInfo fi in subfolder.GetFiles()) //get list of temp files and append to log 
       { 
        using (System.IO.StreamWriter file = File.AppendText(path)) 
        { 
         file.WriteLine("File: " + fi.Name); 
        } 
       } 
      } 
    } 

請原諒任何語法錯誤,我沒有Visual Studio在這臺機器上可用,以確保這是完全正確的。