How To: Load The FileSystem Into A DataTable

A quick and easy way to load files and directories contained in a specified folder into a DataTable.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FileSystem.aspx.cs" Inherits="FileSystem" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
   <title>Untitled Page</title>
</head>
<body>
   <form id="form1" runat="server">
       <div>
           <asp:GridView ID="GridView1" runat="Server">
           </asp:GridView>
           <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Get Files" /></div>
   </form>
</body>
</html>
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;

public partial class FileSystem : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {

        GridView1.DataSource = FileSystemToDataTable(@"C:\");
        GridView1.DataBind();

    }
    /// <summary>
    /// A method that accepts a string that points to a directory,
    /// reads that folders contents and convert that data into a DataTable
    /// </summary>
    /// <param name="directory">the directory to browse</param>
    /// <returns>a DataTable containing the information about the supplied directory</returns>
    public DataTable FileSystemToDataTable(string directory)
    {
        //read the folder
        DirectoryInfo directoryInfo = new DirectoryInfo(directory);

        //create our datatable that would hold the list
        //of folders in the specified directory
        DataTable filesystem = new DataTable();

        /* Add the columns to our datatable
        * You can add as many colums as you like.
        * for this demo, we will just be adding this columns
        * */
        filesystem.Columns.Add(new DataColumn("Name"));
        filesystem.Columns.Add(new DataColumn("FullName"));
        filesystem.Columns.Add(new DataColumn("CreationTime"));
        filesystem.Columns.Add(new DataColumn("LastWriteTime"));

        //loop thru each FileSystemInfo object in the specified directory
        foreach (FileSystemInfo fileSystemInfo in directoryInfo.GetFileSystemInfos())
        {
            //create a new row in ould filesystem table
            DataRow dataRow = filesystem.NewRow();

            //assign the values to our table members
            dataRow["Name"] = fileSystemInfo.Name;
            dataRow["FullName"] = fileSystemInfo.FullName;
            dataRow["CreationTime"] = fileSystemInfo.CreationTime;
            dataRow["LastWriteTime"] = fileSystemInfo.LastWriteTime;

            // add the datarow to our datatable
            filesystem.Rows.Add(dataRow);
        }

        //return our table
        return filesystem;
    }
}

Post a Comment

Please do not post any spam link in the comment box😊

Previous Post Next Post

Blog ads

CodeGuru