2012-03-29 174 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在这台机器上可用,以确保这是完全正确的。