将文本附加到文件(从目录列表中检索)

时间:2012-03-29 14:19:28

标签: c# file-io temporary-files

我正在尝试获取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);
                    }
                }
        }

可能会发生这种情况,因为Temporary Internet Files是一个“特殊”目录,如果要删除其中的所有内容,则会添加3个文件夹,content.ie5,虚拟化和低,但它们不可见/除非缺少基本临时文件目录,否则显示。

总的来说,这将最终删除所有文件,(该代码实际上有效,如果我用简单的fi.Delete()替换所有文件IO代码,它会删除所有文件。所以我不确定我在哪里我在这里出错了。

1 个答案:

答案 0 :(得分:0)

据我所知,临时互联网文件实际上存储在Content.IE5文件夹内的几个子文件夹中。

您需要做的是使用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,以确保这是完全正确的。