分享
 
 
 

ASP.NET编程实例ABC

王朝asp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

ASP.NET是微软.NET宏大战略的一部分。我们不能仅仅将它看成是ASP语言的进化版本,它所能发挥的威力将使开发人员激动与惊喜,更快、更好地实现梦想!本文就介绍ASP.NET的几个常用实例,通过与ASP语言实现方式的对比,让我们对它的强大眼见为实!实例内容(包括下载代码)如下:

●在ASP.NET中实现目录浏览

●在ASP.NET中随意创建图形信息

●在ASP.NET中显示事件日志记录

要运行这些例程,需要在Web服务器上安装Microsoft .NET Framework SDK。要理解代码的含义,需要对C# 编程语言有一定程度的了解。

在ASP.NET中实现目录浏览

在用ASP语言编程的"美好旧时光"中,我们应该不会忘记FileSystemObject对象。它允许对文件系统进行读、写以及目录浏览。但是这个对象模型并不十分完善,比如对于二进制文件来说,还没有开始操作就已经到达范围的结尾了。另外,还有一些希望的函数和属性在ASP中也没有具备。

但是出现了ASP.NET,这些愿望就都能在System.IO 名称空间中被 .NET Framework 类所实现。你会发现,文件处理从没有这么容易过,而且最重要的是从没有这么强大过。

这里,我们将演示文件处理的一个部分:文件和目录列表。我们创建了一些脚本程序,你可以将其应用在自己的应用程序中。

列举驱动器

首先,我们要知道在计算机上有哪些可浏览的驱动器,这些代码保存在文件listdrives.aspx中:

<% @Page Language="C#" %>

<% @Import Namespace="System.IO" %>

<%

string[] achDrives = Directory.GetLogicalDrives();

int nNumOfDrives = achDrives.Length;

Response.Write("<ul>");

for (int i=0; i < nNumOfDrives; i++)

{

Response.Write("<li><a href=\"listdir.aspx?dir=");

Response.Write(Server.UrlEncode(achDrives[i]));

Response.Write("\">" + achDrives[i]);

Response.Write("</a><br>");

}

Response.Write("</ul>");

%>

根据 @Import 名称空间标识,在System.IO 名空间中有一个类叫做Directory,它包含了一些可用于目录上的功能。这个类中还包含静态(不需要对象例示就能调用的)方法GetLogicalDrives,它提供了包含驱动器字母的一个字符串数列。

当然,不能只有一个从GetLogicalDrives 获取的驱动器简单列表,还需要增加了一个页面,在这个页面中提供有关驱动器根目录的信息。

列出目录和文件

有了目录,我们就可以进一步探索子目录、文件以及目录本身的属性(如创建的日期等)了。文件 listdir.aspx 演示了如何执行这些功能:

<% @Page Language="C#" %>

<% @Import Namespace="System.IO" %>

<%

string strDir2List = Request.QueryString.Get("dir");

Directory thisOne = null;

try

{

thisOne = new Directory(strDir2List);

// Reading the directory properties

Response.Write("<p>Creation: " +

thisOne.CreationTime.ToString() + "</p>");

Directory[] subDirectories = thisOne.GetDirectories();

Response.Write("<ul>");

for (int i=0; i < subDirectories.Length; i++)

{

Response.Write("<li><a href=\"listdir.aspx?dir=");

Response.Write(Server.UrlEncode(subDirectories[i].FullName));

Response.Write("\">" + subDirectories[i].Name);

Response.Write("</a><br>");

}

Response.Write("</ul>");

File[] theFiles = thisOne.GetFiles();

Response.Write("<ul>");

for (int i=0; i < theFiles.Length; i++)

{

Response.Write("<li><a href=\"showfile.aspx?file=");

Response.Write(Server.UrlEncode(theFiles[i].FullName));

Response.Write("\">" + theFiles[i].Name);

Response.Write("</a><br>");

}

Response.Write("</ul>");

}

catch (Exception e)

{

Response.Write("Access not possible, error: <i>");

Response.Write(e.ToString() + "</i>");

Response.End();

}

%>

我们使用GetDirectories方法实现目录信息的读取。这个方法返回一个目录对象数组,我们可以用这个数组来建立想要的功能,比如说建立一个更深入的链接。这同样适用于GetFiles方法,它返回一个文件对象数组。

你可能注意到这里使用了try-catch语句。是的,这是为了防止例外情况的发生。比如,当用户试图访问一些不允许他访问的内容时。

显示文件信息

现在到了文件这一级。一个文件有许多属性,为了缩短脚本,下面的例程(文件showfile.aspx)只显示了其中的一些:

<% @Page Language="C#" %>

<% @Import Namespace="System.IO" %>

<html>

<head><title>File Info</title></head>

<body>

<%

string strFile2Show = Request.QueryString.Get("file");

File thisOne = new File(strFile2Show);

%>

<table>

<tr><td>Name:</td><td><%=thisOne.Name%></td></tr>

<tr><td>Path:</td><td><%=thisOne.FullName%></td></tr>

<tr><td>Directory:</td><td><%=thisOne.DirectoryName%></td></tr>

<tr>

<td>Date created:</td>

<td><%=thisOne.CreationTime.ToString()%></td>

</tr>

<tr>

<td>Size:</td>

<td><%=thisOne.Length.ToString()%> Bytes</td>

</tr>

<tr>

<td>Last access:</td>

<td><%=thisOne.LastAccessTime.ToString()%></td>

</tr>

<tr>

<td>Last modified:</td>

<td><%=thisOne.LastWriteTime.ToString()%></td>

</tr>

</table>

<%

StreamReader theReader = thisOne.OpenText();

char[] theBuffer = new char[255];

int nRead = theReader.ReadBlock(theBuffer, 0, 255);

Response.Write("<pre>");

Response.Write(Server.HtmlEncode(new String(theBuffer,0,nRead)));

Response.Write("</pre>");

%>

</body>

</html>

为了演示实现的简单性,在这段脚本代码的结尾处抄了个近路执行文件的读取。首先,打开一个 StreamReader 对象,创建一个缓冲器,用ReadBlock方法来填充缓冲器,并且将 HTML编码段传递给客户;然后很快地就形成了一个小型的"文件预览"。没有费多大周折,你看操作文件的内容是多么得简单 :-)

递归循环以显示目录列表

最后,我们还要编写一个创建目录树的程序recursivelisting.aspx。在其中,我们使用函数RecursiveDump来生成目录树。请看具体代码:

<% @Page Language="C#" %>

<% @Import Namespace="System.IO" %>

<%

string strDir2List = Request.QueryString.Get("dir");

Directory thisOne = new Directory(strDir2List);

Response.Write("<pre>");

RecursiveDump(thisOne, 0);

Response.Write("</pre>");

%>

<script language="C#" runat="server">

void RecursiveDump(Directory theDir, int nLevel)

{

Directory[] subDirectories = theDir.GetDirectories();

for (int i=0; i < subDirectories.Length; i++)

{

Response.Write(new String(' ',nLevel));

Response.Write(subDirectories[i].Name + "\r\n");

RecursiveDump(subDirectories[i], nLevel+1);

}

}

</script>

为了简单起见,这里只使用了空格来生成目录树结构。为使空格在HTML中可以生效,我们必须使用<PRE>标记,否则这些空格就会被忽视。

函数本身有两个参数:一个是目录对象,一个是整数变量以指示当前级别。在当前级别中,用 GetDirectories读取子目录信息,然后在一个 for循环中显示它。对于每个Directory对象, 都调用 RecursiveDump函数,然后级别加1。

注意:列举整个驱动器会花费很多时间。最后,让我们来看看浏览器中的执行结果:

小 结

本文介绍了System.IO 名称空间中的两个对象:Directory和 File。虽然"只"用它们简单显示了目录和文件信息,但我们要知道:这两个对象是执行文件处理的基础。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有