5

.aspx file:

<%@ Import Namespace="System.IO" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Explorer</title>
</head>
<body>
<form id="form1" runat="server">
</form>
</body>
</html>

.CS file:

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Web;
 using System.Web.UI;
 using System.Web.UI.WebControls;
 using System.IO;

public partial class view2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
    string path = "~/";
    GetFilesFromDirectory(path);
}

private static void GetFilesFromDirectory(string DirPath)
{
         try
         {
             DirectoryInfo Dir = new DirectoryInfo(DirPath);
             FileInfo[] FileList = Dir.GetFiles("*.*", SearchOption.AllDirectories);
             foreach (FileInfo FI in FileList)
             {
                 Console.WriteLine(FI.FullName);
             }
         }
         catch (Exception ex)
         {
                Console.WriteLine(ex.Message);
         }
}

I want to list the folders in a particular directory but it continuously showing blank page.Can anybody tell what's the problem in the code.

rpax
  • 4,468
  • 7
  • 33
  • 57
Naresh
  • 657
  • 3
  • 16
  • 35

5 Answers5

15

Display directories and files on a blank page

// YourPage.aspx
<%@ Import Namespace="System.IO" %>
<html>
<body>
    <% foreach (var dir in new DirectoryInfo("E:\\TEMP").GetDirectories()) { %>
        Directory: <%= dir.Name %><br />

        <% foreach (var file in dir.GetFiles()) { %>
            <%= file.Name %><br />
        <% } %>
        <br />
    <% } %>
</body>
</html>
benwasd
  • 1,342
  • 10
  • 18
  • Im trying to do something similar but i dont want to use a static path. Is there a way to get the application path? for example "~/Uploads/" and Uploads is a folder inside of my web project. I dont want to have this: "C://Visual Studio 2013/ projects/my project" etc – ThunD3eR Sep 08 '14 at 19:54
  • 1
    @Ra3IDeN yes, use `HttpContext.Current.Server.MapPath(StringPathInSolution)` , however as the path to your project is static and thus known you could remove it from the string? – LokizFenrir Jan 29 '15 at 08:06
  • it does not fetch files in my case – TheTechGuy Jul 20 '16 at 10:10
  • Correct! You are Pro! – toha Jan 20 '22 at 04:44
1

Don't use Console.WriteLine() use Response.Write(). You're trying to write to the console in a web application.

1

Console.WriteLine will write to the console, not the web page contents you are returning. You need to add a container element to your ASPX page, probably a grid view or repeater, then add assign the file list from the code behind file (to the HTML element you added, use the runat='server' tag and assign it an ID, then reference it by ID name in the code).

toby
  • 885
  • 3
  • 10
  • 21
1

Response.Write in a static codebehind method: DIRTY! In addition you did't control the position where you write. This a little bit cleaner...

// YourPage.aspx
<%@ Import Namespace="System.IO" %>
<html>
<body>
    <ul>
        <% foreach(var file in Directory.GetFiles("C:\\Temp", "*.*", SearchOption.AllDirectories)) { %>
        <li><%= file %></li>       
        <% } %>     
    </ul>
</body>
</html>
benwasd
  • 1,342
  • 10
  • 18
  • 1
    You have your `
  • ` and `
      mixed up. Also, I do agree with you but the user seems to just be doing something basic right now (the page is blank and there's nothing else in the code-behind) so I didn't really see the point of getting into perfecting the display. Also, I didn't even notice that the method was `static`, good eyes. :)
  • – Richard Marskell - Drackir May 18 '11 at 16:01
  • Thank you very much.I'm very new to coding. – Naresh May 18 '11 at 16:01
  • Please tell me this.I just want to display folders in a directory(not subfolders).In your code replacing Files with Directories giving every folder in it. – Naresh May 18 '11 at 16:11