日期:2014-05-19  浏览次数:20922 次

为什么查看c盘目录会出现一些不必要的子目录和文件?
我想打印出C盘下第一级中的目录和文件,就像资源管理器一样,但下面程序列出了资源管理器中没有列出的文件和目录  

Console.WriteLine( "*****文件***** ");
                s1=Directory.GetFiles(@ "c:\ ");
                foreach(string   t2   in   s1)   Console.WriteLine(t2);
           
  Console.WriteLine( "********目录******* ");
        s2=Directory.GetDirectories(@ "c:\ ");
        foreach(string   t2   in   s2)       Console.WriteLine(t2);
               

运行结果为:
*****文件*****
c:\AUTOEXEC.BAT
c:\boot.ini
c:\bootfont.bin
c:\CONFIG.SYS
c:\hiberfil.sys
c:\IO.SYS
c:\KAVInfo.ini
c:\MSDOS.SYS
c:\NTDETECT.COM
c:\ntldr
c:\pagefile.sys
********目录*******
            c:\Config.Msi
            c:\Documents   and   Settings
            c:\Inetpub
            c:\KRECYCLE
            c:\PowerPlr
            c:\Program   Files
            c:\RECYCLER
            c:\System   Volume   Information
            c:\Syswm1h
            c:\WINDOWS
请按任意键继续.   .   .

我的系统是XP的,上面的好多数据都没有在资源管理器中列出来,为什么会出现这种情况?
我想让结果与资源管理器中列出的一样应该怎么做?

------解决方案--------------------
因为你把所有的文件和文件夹都列出来了,你先判断一下文件和文件夹的属性,如果是隐藏(Hidden)的和系统(System)的就不要列出来就可以了。

this.listBox1.Items.Add( "*****文件***** ");
DirectoryInfo s1 = new DirectoryInfo(@ "C:\ ");
foreach (FileInfo t1 in s1.GetFiles())
{
if (t1.Attributes.ToString().IndexOf( "Hidden ") < 0 &&
t1.Attributes.ToString().IndexOf( "System ") < 0)
Console.WriteLine(t1);
}

this.listBox2.Items.Add( "********目录******* ");
DirectoryInfo s2 = new DirectoryInfo(@ "C:\ ");
foreach (DirectoryInfo t2 in s2.GetDirectories() )
{
if (t2.Attributes.ToString().IndexOf( "Hidden ") < 0 &&
t2.Attributes.ToString().IndexOf( "System ") < 0)
Console.WriteLine(t2);
}