2012-03-29 3 views
0

Tempインターネットファイル内のファイルのリストを取得し、各ファイルの名前をテキストファイルに追加しようとしています。このコードが実行されると、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); 
        } 
       } 
     } 

これが起こっている。その可能インターネット一時ファイルは、「特別な」ディレクトリですので、あなたはそれのすべてを削除した場合、それはその後3で追加されたフォルダ、content.ie5、仮想化、および低を持っていますが、彼らベースのインターネットファイルディレクトリが見つからない限り表示されません。

全体的にこれは最終的にすべてのファイルを削除することになります(このコードはすべてのファイルIOコードを単純なfi.Delete()に置き換えるとすべてのファイルが削除されるため、私はここで間違っているつもりです。

+1

[C# - 一時的なインターネットファイルを削除する方法]の複製が可能です。(http://stackoverflow.com/questions/6521148/c-sharp-how-to-delete-temporary-internet-files) –

+0

すでに投稿されています - パスを取得したり、ファイルを削除したりすることは問題ではありません。しかし、実際には何のファイルが追加されています。その投稿は私に、私がすでにやり方を知っていることすべてを伝えています。 – Windex

+1

foreachの外でlog.txtファイルを開くと(foreachブロックの周りにusingブロックを置く)、違いはありますか? – Polyfun

答えて

0

私の知る限り、インターネット一時ファイルが実際に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を使用することはできません。

関連する問題