.aspx文件:
<%@ 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文件:
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);
}
}
我想列出特定目录中的文件夹,但它会不断显示空白页面。任何人都可以告诉代码中的问题。
答案 0 :(得分:12)
在空白页面上显示目录和文件
// 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>
答案 1 :(得分:1)
请勿使用Console.WriteLine()
使用Response.Write()
。您正尝试在Web应用程序中写入控制台。
答案 2 :(得分:1)
Console.WriteLine将写入控制台,而不是您要返回的网页内容。您需要向ASPX页面添加容器元素,可能是网格视图或转发器,然后添加从文件后面的代码中分配文件列表(到您添加的HTML元素,使用runat ='server'标记并为其分配ID,然后通过代码中的ID名称引用它。
答案 3 :(得分:1)
Response.Write在静态代码后面的方法:DIRTY!此外,您无法控制您所写的位置。这有点干净......
// 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>
答案 4 :(得分:0)
您可以使用目录类
/
//using System.IO;
private void GetDirectories()
{
DataTable dt = new DataTable();
dt.Columns.Add("direction",typeof(string));
try
{
string[] dirs = Directory.GetDirectories(@"yourpath", "*", SearchOption.AllDirectories);
foreach (string dir in dirs)
{
dt.Rows.Add(dir);
}
if (dirs.Length <= 0)
{
lbl.text="your message"
}
rpt.DataSource = dt; //your repeater
rpt.DataBind(); //your repeater
}
catch (Exception e)
{
lbl.text="your message"//print message assign it to label
}
}
在aspx页面
<asp:Label runat="server" ID="lbl"></asp:Label>
<asp:Repeater ID="rpt" runat="server" ClientIDMode="AutoID">
<ItemTemplate>
<tr>
<td><%#Eval("direction")%></td>
</tr>
</ItemTemplate>
</asp:Repeater>