2015-01-19 2 views
-1

Я хочу сделать программу для чтения общего количества дисков в системе и сделать представление списка, чтобы показать его информацию, которая подсчитывает количество папок и файлов по отдельности в каждом диске и есть некоторая ошибка, из-за которой я не могу решить эту проблему. Пожалуйста, помогите мне найти ошибку в том же.Прочитать количество дисков и их папку и файлы

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using SystemInformation; 
using SystemInformation.Properties; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using MySql.Data.MySqlClient; 
using System.Diagnostics; 
using System.IO; 

namespace SystemInformation 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      try 
      { 

       DriveInfo[] drives = DriveInfo.GetDrives(); 

       foreach (DriveInfo drive in drives) 
       { 
        ListViewItem item = new ListViewItem(); 
        var k = Console.WriteLine(drive.Name); 
        item.SubItems.Add(k); 

        foreach (string path in Directory.EnumerateFiles(drive.Name)) 
        { 
         Console.WriteLine(path); 
         lstInfo.Items.Add(item); 
        } 
       } 
      } 

      catch (MySqlException ex) 
      { 
       Trace.WriteLine(ex.Message); 
      } 
      catch (Exception ex) 
      { 
       Trace.WriteLine(ex.Message); 
      } 
     } 

     public string k { get; set; } 
    } 
} 
+2

Некоторая ошибка? Проконсультируйтесь и сообщите точную ошибку. –

+0

На самом деле я не могу решить проблему. Как мне составить список. –

+0

Начните с чтения документации по работе с элементом управления ListView [здесь] (http://msdn.microsoft.com/en-us/library/aa984139 (v = vs.71) .aspx) – Christian

ответ

0

Прежде всего, метод Console.WriteLine() является недействительным, и вы не можете получить выход из него.

Вы не можете использовать несколько уровней, используя listview. Вместо этого вам нужно будет использовать TreeView.

Следующий код даст вам структуру файла на вашем компьютере:

 private void Form1_Load(object sender, EventArgs e) 
    { 
     DriveInfo[] drives = DriveInfo.GetDrives(); 
     foreach (DriveInfo drive in drives) 
     { 
      var item = TV_Items.Nodes.Add(drive.Name); 
      AddDirectories(item, drive.Name); 
     } 
    } 

    private void AddDirectories(TreeNode parent, string path) 
    { 
     var directories = Directory.GetDirectories(path); 
     foreach (var directory in directories) 
     { 
      try 
      { 
       var subItem = parent.Nodes.Add(Path.GetDirectoryName(directory)); 
       foreach (var file in Directory.GetFiles(directory)) 
       { 
        subItem.Nodes.Add(Path.GetFileNameWithoutExtension(file)); 
       } 
       AddDirectories(subItem, directory); 
      } 
      catch (Exception ex) 
      { 
       Debug.WriteLine(ex.Message); 
      } 
     } 
    } 

Я не понимаю, что вы хотите посчитать точно. Это количество папок и файлов в каждой папке или только на каждом диске?

Смежные вопросы