// Tread private void GetDriveInfo() { DriveInfo driveInfo = new DriveInfo(rootDir); string driveName = driveInfo.VolumeLabel; if (driveName.Length == 0) { driveName = "-нет-"; } string driveFreeSpace = NumberFormat.DigitNumber(driveInfo.TotalFreeSpace); string driveTotalSpace = NumberFormat.DigitNumber(driveInfo.TotalSize); DriveInfoToLabel("[" + driveName + "] " + driveFreeSpace + " из " + driveTotalSpace); }
// Thread private void GetFolderInfo() { DirectoryInfo directoryInfo = new DirectoryInfo(currentDir); long sizeSelectedItem = 0; long sizeAllItem = DirSize(directoryInfo); int countSelectedFiles = 0; int countAllFiles = directoryInfo.GetFiles().Length; int countSelectedFolders = 0; int countAllFolders = directoryInfo.GetDirectories().Length; FileInfoToLabel(NumberFormat.DigitNumber(sizeSelectedItem) + " из " + NumberFormat.DigitNumber(sizeAllItem) + "; файлов: " + countSelectedFiles + " из " + countAllFiles + "; папок: " + countSelectedFolders + " из " + countAllFolders); }
public void GetFoldersFiles(string directory) { Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); List <DirectoryList> directoryList = new List <DirectoryList>(); DirectoryInfo thisDirectory = new DirectoryInfo(directory); currentFolder = thisDirectory.Name.ToString(); // if root rootDir = thisDirectory.Root.ToString(); currentDir = thisDirectory.FullName.ToString(); if (rootDir != currentDir) { string dirFolder = Directory.GetParent(Directory.GetParent(directory).ToString()).ToString(); DateTime dateFolder = Directory.GetCreationTime(dirFolder); directoryList.Add(new DirectoryList() { tag = "up", directory = dirFolder, name = "[..]", type = "", size = "", atrributes = thisDirectory.Attributes }); } try { // Get folders DirectoryInfo[] folders = thisDirectory.GetDirectories(); foreach (DirectoryInfo folder in folders) { directoryList.Add(new DirectoryList() { tag = "folder", directory = folder.FullName, name = "[" + folder.Name + "]", type = "", size = "<папка>", date = Directory.GetCreationTime(folder.FullName).ToString(dateTimeFormat), atrributes = folder.Attributes }); } // Get files FileInfo[] files = thisDirectory.GetFiles(); foreach (FileInfo file in files) { string ext = ""; try { if (file.Extension.Length > 0) { ext = file.Extension.Split('.')[1]; } } catch { } directoryList.Add(new DirectoryList() { tag = "file", directory = file.FullName, name = Path.GetFileNameWithoutExtension(file.FullName), type = " " + ext, size = NumberFormat.DigitNumber(file.Length), date = File.GetCreationTime(file.FullName).ToString(dateTimeFormat), atrributes = file.Attributes }); } } catch (Exception e) { MessageBox.Show(e.ToString()); return; } ImageList iconList = new ImageList(); iconList.ColorDepth = ColorDepth.Depth32Bit; iconList.Images.Add(iconUp); iconList.Images.Add(iconFolder); iconList.Images.Add(iconUnknown); listViewDirectory.SmallImageList = iconList; listViewDirectory.Items.Clear(); listViewDirectory.BeginUpdate(); foreach (DirectoryList lineDirectoryList in directoryList) { string[] item = { lineDirectoryList.name, lineDirectoryList.type, lineDirectoryList.size, lineDirectoryList.date }; ListViewItem listItem = new ListViewItem(item); listItem.Name = lineDirectoryList.directory; switch (lineDirectoryList.tag) { case "up": listItem.ImageIndex = 0; listItem.Tag = "DirectoryUp"; break; case "folder": listItem.ImageIndex = 1; listItem.Tag = lineDirectoryList.atrributes.ToString(); break; default: listItem.ImageIndex = 2; listItem.Tag = lineDirectoryList.atrributes.ToString(); break; } listViewDirectory.Items.Add(listItem); } listViewDirectory.EndUpdate(); // Set current dir label //labelDir.Text = currentDir; // Tread GetIcons directoryListVolatile = directoryList; //directoryList.Clear(); //SetIcon(); Thread setIconTread = new Thread(SetIcon); setIconTread.Start(); //SetIcon(); // Tread DriveInfo Thread dirveInfoThread = new Thread(GetDriveInfo); dirveInfoThread.Start(); // Tread InfoFolder Thread folderInfoThread = new Thread(GetFolderInfo); folderInfoThread.Start(); stopWatch.Stop(); TimeSpan ts = stopWatch.Elapsed; labelDir.Text = ts.Milliseconds.ToString(); }