WPF实例,以getFiles()获取文件夹,treeview的应用

读取电脑硬盘根目录添加到TreeView控件

 foreach (DriveInfo item in System.IO.DriveInfo.GetDrives())
            {
                if(item.ToString()=="C:\\") //这里不添加c盘
                    continue;
                TreeViewItem tvi = new TreeViewItem();
                tvi.Header = item.ToString();
                tvi.Tag = item.RootDirectory;
                tvi.Items.Add("*");

                tv.Items.Add(tvi);
            }

*是占位符,当点击treeview节点时再给添加其目录,对隐藏文件夹跳过查找

  private void tv_Expanded(object sender, RoutedEventArgs e)
        {
            var tvi = e.OriginalSource as TreeViewItem;
            tvi.Items.Clear();
            var di = tvi.Tag as DirectoryInfo;
            foreach (var item in di.GetDirectories())
            {
                //只查不隐藏文件夹下的文件
                if ((item.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden)   //必须进行与运算,因为默认文件是“Hidden”+归档(二进制11)。而Hidden是10.因此与运算才可以判断
                {
                    TreeViewItem t = new TreeViewItem()
                    {
                        Tag = item,
                        Header = item.ToString()
                    };
                    t.Items.Add("*");
                    tvi.Items.Add(t);
                }
            }
        }

 

查找文件夹下包括子文件夹下所有文件,使用递归函数:

       public void GetFiles(DirectoryInfo di)
        {
            try
            {
                filelist.AddRange(di.GetFiles());
                foreach (var item in di.GetDirectories())
                {
                    if ((item.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden)   //必须进行与运算,因为默认文件是“Hidden”+归档(二进制11)。而Hidden是10.因此与运算才可以判断
                    {
                        GetFiles(item);
                    }
                }
            }
            catch (Exception ex)
            {
                
            }
        }

 

posted @ 2016-10-20 14:34  lunawzh  阅读(1610)  评论(0编辑  收藏  举报