读取电脑硬盘根目录添加到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) { } }