PDA

View Full Version : xin hỏi cách đếm thư mục không ẩn ?



zKeitherz
06-11-2010, 16:07
mình muốn kiểm tra 1 ổ đĩa hay 1 thư mục
xem nó có bao nhiêu thư mục con (ko tính thư mục ẩn)

vd : DirectoryInfo ourDir = new DirectoryInfo(@"C:\");
textBox1.Text = ourDir.GetDirectories().Length.ToString();

làm sao để nó lấy toàn bộ thư mục con mà ko tính thư mục ẩn ?

xin cám ơn

littleNeo
06-11-2010, 17:46
string[] nonHiddenFolders = Directory.GetDirectories(@"C:\")
.Where(folder => !(new DirectoryInfo(folder)
.Attributes.HasFlag(FileAttributes.Hidden)))
.ToArray();

tranmanhdit
06-11-2010, 20:42
FileAttributes <---< bộ Enum này nó có một thuộc tính:
[Flag]
enum FileAttributes
{
....
}
điều đó làm các bạn lầm tưởng. thuộc tính Flag (cờ) nghĩa là nó được xử lý ở dạng nhị phân, đặc biệt hơn là nó combine được nhiều giá trị vào 1 mà không làm mất giá trị
Một thư mục thường có nhiều FileAttributes, ví như System, Hidden, ReadOnly chẳng hạn. Muốn biết có Hidden hay không làm thế này:
DirectoryInfo dir = new ....;
// kiểm tra Hidden
if((dir.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
{
// do something
}