ASP.NET Tutorial/File Directory/DirectoryInfo

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Binding a GridView to directory files (C#)

   <source lang="csharp">

<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server">

   protected void Page_Load(object sender, EventArgs e)
   {
       foreach (System.IO.DriveInfo drive in System.IO.DriveInfo.GetDrives())
       {
           TreeNode node = new TreeNode();
           node.Value = drive.Name;
           if (drive.IsReady)
               node.Text = drive.Name + " - (free space: " + drive.AvailableFreeSpace + ")";
           else
               node.Text = drive.Name + " - (not ready)";
           this.TreeView1.Nodes.Add(node);
       }
   }
   private void LoadDirectories(TreeNode parent, string path)
   {
       System.IO.DirectoryInfo directory = new System.IO.DirectoryInfo(path);
       try
       {
           foreach (System.IO.DirectoryInfo d in directory.GetDirectories())
           {
               TreeNode node = new TreeNode(d.Name, d.FullName);
               parent.ChildNodes.Add(node);
               LoadDirectories(node, d.FullName);
           }
       }
       catch (System.UnauthorizedAccessException e)
       {
           parent.Text += " (Access Denied)";
       }
       catch (Exception e)
       {
           parent.Text += " (Unknown Error: " + e.Message + ")";
       }
   }
   protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
   {
       System.IO.DirectoryInfo directory = new System.IO.DirectoryInfo(this.TreeView1.SelectedNode.Value);
       this.GridView1.DataSource = directory.GetFiles();
       this.GridView1.DataBind();
   }

</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">

   <title>Untitled Page</title>

</head> <body>

   <form id="form1" runat="server">
                  <asp:TreeView ID="TreeView1" 
                                runat="server"
                                OnSelectedNodeChanged="TreeView1_SelectedNodeChanged">
                  </asp:TreeView>
                   <asp:GridView ID="GridView1" 
                                 runat="server"
                                 AutoGenerateColumns="False" 
                                 GridLines="None" CellPadding="3">
                       <Columns>
                           <asp:BoundField DataField="Name" HeaderText="Name"
                                HeaderStyle-HorizontalAlign="Left" 
                                HeaderStyle-Font-Bold="true" />
                           <asp:BoundField DataField="Length" HeaderText="Size"
                                ItemStyle-HorizontalAlign="Right" 
                                HeaderStyle-HorizontalAlign="Right" 
                                HeaderStyle-Font-Bold="true" />
                           <asp:BoundField DataField="LastWriteTime"
                                HeaderText="Date Modified" 
                                HeaderStyle-HorizontalAlign="Left" 
                                HeaderStyle-Font-Bold="true" />
                       </Columns>
                   </asp:GridView>
   </form>

</body> </html></source>


Binding a GridView to directory files (VB)

   <source lang="csharp">

<%@ Page Language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server">

   Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
       For Each drive As System.IO.DriveInfo In System.IO.DriveInfo.GetDrives()
           Dim node As TreeNode = New TreeNode()
           node.Value = drive.Name
           If (drive.IsReady) Then
               node.Text = drive.Name & " - (free space: " & drive.AvailableFreeSpace & ")"
               LoadDirectories(node, drive.Name)
           Else
               node.Text = drive.Name & " - (not ready)"
           End If
           Me.TreeView1.Nodes.Add(node)
       Next
       
       Me.TreeView1.CollapseAll()
       
   End Sub
   
   Private Sub LoadDirectories(ByVal parent As TreeNode, ByVal path As String)
       
       Dim directory As System.IO.DirectoryInfo = New System.IO.DirectoryInfo(path)
       
       Try
           For Each d As System.IO.DirectoryInfo In directory.GetDirectories()
           
               Dim node As TreeNode = New TreeNode(d.Name, d.FullName)
               parent.ChildNodes.Add(node)
               LoadDirectories(node, d.FullName)
           Next
       Catch ex As System.UnauthorizedAccessException
           parent.Text += " (Access Denied)"
       Catch ex As Exception
           parent.Text += " (Unknown Error: " + ex.Message + ")"
       End Try
   End Sub
   Protected Sub TreeView1_SelectedNodeChanged _
       (ByVal sender As Object, ByVal e As System.EventArgs)
       Dim directory As System.IO.DirectoryInfo = New System.IO.DirectoryInfo(Me.TreeView1.SelectedNode.Value)
       Me.GridView1.DataSource = directory.GetFiles()
       Me.GridView1.DataBind()
   End Sub

</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">

   <title>Untitled Page</title>

</head> <body>

   <form id="form1" runat="server">
                  <asp:TreeView ID="TreeView1" runat="server"
                       OnSelectedNodeChanged="TreeView1_SelectedNodeChanged">
                  </asp:TreeView>
                   <asp:GridView ID="GridView1" runat="server"
                        AutoGenerateColumns="False" GridLines="None" CellPadding="3">
                       <Columns>
                           <asp:BoundField DataField="Name" HeaderText="Name"
                                HeaderStyle-HorizontalAlign="Left" 
                                HeaderStyle-Font-Bold="true" />
                           <asp:BoundField DataField="Length" HeaderText="Size"
                                ItemStyle-HorizontalAlign="Right" 
                                HeaderStyle-HorizontalAlign="Right" 
                                HeaderStyle-Font-Bold="true" />
                           <asp:BoundField DataField="LastWriteTime"
                                HeaderText="Date Modified" 
                                HeaderStyle-HorizontalAlign="Left" 
                                HeaderStyle-Font-Bold="true" />
                       </Columns>
                   </asp:GridView>
   </form>

</body> </html></source>


Manually enumerating directory files (C#)

   <source lang="csharp">

<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server">

   protected void Page_Load(object sender, EventArgs e)
   {
       System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(@"C:\");
       
       foreach (System.IO.FileInfo file in dir.GetFiles("*.*"))
       {
           Response.Write(file.Name + "
"); Response.Write(file.LastWriteTime.ToString() + "
"); Response.Write(file.Attributes.ToString() + "
"); } }

</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">

   <title>Untitled Page</title>

</head> <body>

   <form id="form1" runat="server">
   </form>

</body> </html></source>


Manually enumerating directory files (VB)

   <source lang="csharp">

<%@ Page Language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server">

   Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
       
       Dim dir As System.IO.DirectoryInfo = New System.IO.DirectoryInfo("C:\")
       
       For Each file As System.IO.FileInfo In dir.GetFiles("*.*")
           Response.Write(file.Name & "
") Response.Write(file.LastWriteTime.ToString() & "
") Response.Write(file.Attributes.ToString() & "
") Next End Sub

</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">

   <title>Untitled Page</title>

</head> <body>

   <form id="form1" runat="server">
   </form>

</body> </html></source>