Отображение списка файлов и подпапок в datagridview? - PullRequest
0 голосов
/ 29 марта 2012

У меня есть приложение, в котором оно отображает список файлов в каталоге и выдает сообщение, когда в нем есть файл, превышающий определенный лимит файлов.Но почему-то я не могу отобразить вложенные папки в этом каталоге.Как я могу это сделать.Вот мой код:

public partial class Form1 : Form
{   private Timer timer;
    private int count;
    DataTable dt = new DataTable();
    DataRow dr;
    String[] s1;
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {   
        count = 0;
        timer = new Timer();
        timer.Interval = 1000;
        timer.Tick += new EventHandler(timer1_Tick);
        timer.Start();
        //Initialize Directory path
        s1 = Directory.GetFiles(@"C:\Documents and Settings\Administrator\Desktop\FILE");
        //File Name, File Type, File size, create date
        for (int i = 0; i <= s1.Length - 1; i++)
        {
            if (i == 0)
            {
                //Add Data Grid Columns with name
                dt.Columns.Add("File_Name");
                dt.Columns.Add("File_Type");
                dt.Columns.Add("File_Size");
                dt.Columns.Add("Create_Date");
            }
            //Get each file information
            FileInfo f = new FileInfo(s1[i]);
            FileSystemInfo f1 = new FileInfo(s1[i]);
            dr = dt.NewRow();
            //Get File name of each file name
            dr["File_Name"] = f1.Name;
            //Get File Type/Extension of each file 
            dr["File_Type"] = f1.Extension;
            //Get File Size of each file in KB format
            dr["File_Size"] = (f.Length / 1024).ToString();
            //Get file Create Date and Time 
            dr["Create_Date"] = f1.CreationTime.Date.ToString("dd/MM/yyyy");
            //Insert collected file details in Datatable
            dt.Rows.Add(dr);


            if ((f.Length / 1024) > 5000)
            {
               MessageBox.Show("" + f1.Name + " had reach its size limit.");
            }
            else
            { }

        }
        if (dt.Rows.Count > 0)
        {
            //Finally Add DataTable into DataGridView
            dataGridView1.DataSource = dt;
        } 
    }

        private void timer1_Tick(object sender, EventArgs e)
        {
            count++;
            if (count == 60)
            {   
                count = 0;
                timer.Stop();
                Application.Restart();
            }
        }
        public string secondsToTime(int seconds)
        {
            int minutes = 0;
            int hours = 0;

            while (seconds >= 60)
            {
                minutes += 1;
                seconds -= 60;
            }
            while (minutes >= 60)
            {
                hours += 1;
                minutes -= 60;
            }

            string strHours = hours.ToString();
            string strMinutes = minutes.ToString();
            string strSeconds = seconds.ToString();

            if (strHours.Length < 2)
                strHours = "0" + strHours;
            if (strMinutes.Length < 2)
                strMinutes = "0" + strMinutes;
            if (strSeconds.Length < 2)
                strSeconds = "0" + strSeconds;

            return strHours + ":" + strMinutes + ":" + strSeconds;
        }
     }

1 Ответ

1 голос
/ 29 марта 2012

Возможны следующие перегрузки:

Directory.GetFiles(@"C:\Documents and Settings\Administrator\Desktop\FILE",
                   "*",
                   SearchOption.AllDirectories)

это будет искать все файлы в вашем каталоге (включая подкаталоги), которые соответствуют шаблону, переданному во втором параметре.

Кроме того, возвращаемые имена файлов включают полный путь ко всем файлам, поэтому вы можете правильно их обработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...