Download presentation
Presentation is loading. Please wait.
1
第5章 .NET框架类 5
2
内容提要 本章介绍常用的.NET框架类。 使用System.IO命名空间进行文件系统处理
使用System.Drawing命名空间绘制图形,利用System.Web.Security实现加密等等。
3
System.IO命名空间操作文件系统 System.IO命名空间提供了许多用于数据文件和数据流进行读写操作的类。包括的类如表5-1所示。
说明 Directory 提供的方法为静态方法,用于创建、移动和读取目录。 DirectoryInfo 提供的方法必须创建该类的实例,才能使用。用于创建、移动和读取目录。 File 提供创建、复制、删除、移动和打开文件的静态方法。 FileInfo 提供创建、复制、删除、移动和打开文件的实例方法。 FileStream 以文件为主的 Stream,既支持同步读写操作,也支持异步读写操作。 StreamReader 实现一个TextReader,以一种特定的编码从字节流中读取字符。 StreamWriter 实现一个 TextWriter,以一种特定的编码向流中写入字符。 TextReader 可读取连续字符的对象。 TextWriter 可写入连续字符的对象。该类为抽象类。
4
对文件进行操作 案例名称:创建一个有内容的文本文件 程序名称:5-01.aspx
Page Language="C#" %> Import Namespace="System.IO" %> <Script Runat="Server"> public void Page_Load(Object src,EventArgs e){ //建立StreamWrite StreamWriter rw = File.CreateText(Server.MapPath(".")+"\\myText.txt"); rw.WriteLine("热爱祖国"); //使用WriteLine写入内容 rw.WriteLine("热爱人民"); rw.Flush(); //将缓冲区的内容写入文件 rw.Close(); //关闭rw对象 //打开文本文件 StreamReader sr = File.OpenText(Server.MapPath(".")+"\\myText.txt"); StringBuilder output = new StringBuilder(); string rl; while((rl=sr.ReadLine())!=null) { output.Append(rl+"<br>"); } lblFile.Text = output.ToString(); sr.Close(); </script> <form runat="server"> <b>创建文本文件成功,写入成功,文件的内容为:</b> <p><asp:Label id="lblFile" runat="server" /> </p></form>
5
追加文本文件 案例名称:追加文本文件 程序名称:5-02.aspx <% @ Page Language="C#" %>
Page Language="C#" %> Import Namespace="System.IO" %> <Script Runat="Server"> public void Page_Load(Object src,EventArgs e){ StreamWriter sw = File.AppendText(Server.MapPath(".")+"\\myText.txt"); sw.WriteLine("热爱祖国"); //使用WriteLine写入内容 sw.WriteLine("热爱人民"); sw.Flush(); //将缓冲区的内容写入文件 sw.Close(); //关闭sw对象 //打开文本文件 StreamReader sr = File.OpenText(Server.MapPath(".")+"\\myText.txt"); StringBuilder output = new StringBuilder(); string rl; while((rl=sr.ReadLine())!=null) { output.Append(rl+"<br>"); } lblFile.Text = output.ToString(); sr.Close(); </script> <form runat="server"> <b>读取文本文件成功</b> <p><asp:Label id="lblFile" runat="server" /> </p></form>
6
文本文件的拷贝 拷贝文件利用File对象的Copy方法
该方法使用格式为:“File.Copy(OrignFile,NewFile,true)”,参数true的意思是如果目标文件存在就覆盖。
7
文本文件的拷贝 案例名称:文本文件的拷贝 程序名称:5-03.aspx <% @ Page Language="C#" %>
Page Language="C#" %> Import Namespace="System.IO" %> <Script Runat="Server"> public void Page_Load(Object src,EventArgs e){ string OrignFile,NewFile; OrignFile = Server.MapPath(".")+"\\myText.txt"; NewFile = Server.MapPath(".")+"\\myTextCopy.txt"; //拷贝文件 try { File.Copy(OrignFile,NewFile,true); if(File.Exists(NewFile)) { FileInfo fi = new FileInfo(NewFile); DateTime Ctime = fi.CreationTime; lblEToFile.Text = NewFile + "<br>创建时间:" + Ctime.ToString() + "<br>"; } else { lblEToFile.Text = NewFile + "不存在<br>";} catch(Exception ee) { lblError.Text = "不能拷贝文件"; </script> <b>拷贝文件操作完毕</b><br> <form runat="server"><p> </p><asp:Label id="lblEToFile" runat="server" /><p> </p><asp:Label id="lblError" runat="server" /> </form>
8
删除文件 案例名称:删除文件 程序名称:5-04.aspx <% @ Page Language="C#" %>
Page Language="C#" %> Import Namespace="System.IO" %> <Script Runat="Server"> public void Page_Load(Object src,EventArgs e){ //首先判断文件是否存在 string delFile = Server.MapPath(".")+"\\myTextCopy.txt"; try{ //删除文件 File.Delete(delFile); Label lblOk = new Label(); lblOk.Text = "删除文件"+delFile+"成功"; plShow.Controls.Add(lblOk); } catch(Exception ee){ //捕捉异常 Label lblFileExists = new Label(); lblFileExists.Text = "不能删除文件"+delFile+"<br>"; plShow.Controls.Add(lblFileExists); </script> <form runat="server"> <b>删除文件操作的结果为</b><p> <asp:Panel id="plShow" runat="server" Font-Name="Arial"/> </form>
9
移动文件 案例名称:移动文件 程序名称:5-05.aspx <% @ Page Language="C#" %>
Page Language="C#" %> Import Namespace="System.IO" %> <Script Runat="Server"> public void Page_Load(Object src,EventArgs e){ string OrignFile,NewFile; OrignFile = Server.MapPath(".")+"\\myText.txt"; NewFile = Server.MapPath(".")+"\\myTextCopy.txt"; try { //移动文件 File.Move(OrignFile,NewFile); lblError.Text = "移动文件成功"; } catch(Exception ee) { lblError.Text = "不能移动文件"; </script> <body><b>移动文件操作结果为:</b><br> <form runat="server"> <asp:Label id="lblError" runat="server" /> </form>
10
对文件夹进行操作 对文件夹操作利用System.IO.Directory和System.IO.DirectoryInfo类。Directory类提供了用于创建、删除、移动和浏览目录和子目录的各种方法,这些方法都是静态的。 类似Directory类,DirectoryInfo也提供了用于创建、删除、移动和浏览目录及子目录的各种方法,提供的方法都是非静态方法,不能按照类名DirectoryInfo进行访问,而必须通过DirectoryInfo的实例进行访问。创建的文件夹操作包括创建和删除,如程序5-06.aspx所示。
11
操作文件夹 案例名称:操作文件夹 程序名称:5-06.aspx <% @ Page Language="C#" %>
Page Language="C#" %> Import Namespace="System.IO" %> <Script Runat="Server"> public void Page_Load(Object src,EventArgs e){ // 创建目录c:\first DirectoryInfo d=Directory.CreateDirectory("c:\\first"); // d1指向c:\first\first1 DirectoryInfo d1=d.CreateSubdirectory("first1"); // d2指向c:\first\first1\first1_1 DirectoryInfo d2=d1.CreateSubdirectory("first1_1"); // 将当前目录设为c:\first Directory.SetCurrentDirectory("c:\\first"); // 创建目录c:\first\first2 Directory.CreateDirectory("first2"); // 创建目录c:\first\first2\first2_1 Directory.CreateDirectory("first2\\first2_1"); } </script>
12
使用System.Drawing命名空间 System.Drawing命名空间提供了对GDI+基本图形功能的访问。
在 System.Drawing.Drawing2D、System.Drawing.Imaging 以及 System.Drawing.Text 命名空间中提供了相关的绘图功能。
13
GDI+介绍 GDI(Graphics Device Interface.,图形设备接口)提供了对各种图形绘制的支持。
GDI+是对GDI的改进,也是.NET框架结构的重要组成部分。和GDI一样,提供对二维图形图像和文字排版处理的支持。
14
使用System.Drawing画图 在页面中引入命名空间System.Drawing的语法是:
Import namespace="System.Drawing"%>” 要动态的输出jpeg图像,在页面声明的时候,需要声明为: Page Language="C#" ContentType="image/jpeg" %>”
15
使用System.Drawing画图 案例名称:使用System.Drawing画图 程序名称:5-08.aspx
Page Language="C#" ContentType="image/jpeg" %> Import namespace="System.Drawing"%> <script runat="server"> void Page_Load(object sender,EventArgs e) { Bitmap image=new Bitmap(350,200); Graphics g=Graphics.FromImage(image); g.Clear(Color.White); Rectangle outline=new Rectangle(10,5,300,100); g.DrawEllipse(new Pen(Color.Black,8.0f),outline); g.FillPie(new SolidBrush(Color.Red),outline,-20f,120f); g.FillPie(new SolidBrush(Color.Yellow),outline,100f,120f); g.FillPie(new SolidBrush(Color.Blue),outline,220f,100f); g.FillPie(new SolidBrush(Color.Green),outline,320f,40f); image.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); } </script>
16
ASP.NET中的字符加密 案例名称:ASP.NET中字符串的加密 程序名称:5-09.aspx
Page Language="C#" %> Import Namespace="System.Web.Security" %> <script language="C#" runat="server"> void Page_Load(object sender,EventArgs e) { string s1="We are happy!"; Response.Write("字符串We are happy!经过sha1加密后为:<br>"); string s2 = System.Web.Security.FormsAuthentication .HashPasswordForStoringInConfigFile( s1 , "sha1"); Response.Write(s2); Response.Write("<br>"); string s3="shizhiguo"; Response.Write("字符串We are happy!经过md5加密后为:<br>"); string s4 = System.Web.Security.FormsAuthentication .HashPasswordForStoringInConfigFile( s3 , "md5"); Response.Write(s4); } </script>
17
发送需要服务器端验证的Email 案例名称:发送电子邮件 程序名称:5-10.aspx
language="C#" %> Namespace="System.Web.Mail" %> <Script language="C#" runat="server"> private void Page_Load(object sender, System.EventArgs e){ MailMessage mail = new MailMessage(); mail.To = mail.From = mail.Subject = "邮件标题"; mail.Body = "邮件内容"; //设置需要服务器端验证 mail.Fields.Add(" "1"); //验证的用户名 mail.Fields.Add(" //验证的密码 mail.Fields.Add(" "密码"); //发送邮件的SMTP服务器地址 SmtpMail.SmtpServer = "SMTP服务器地址"; SmtpMail.Send( mail ); Response.Write("发送成功!"); } </Script>
18
邮 箱 后 缀 Smtp地址 21cn.com smtp.21cn.com sina.com smtp.sina.com.cn 163.net smtp.163.net 163.com smtp.163.com fm365.com mail.fm365.com 263.net smtp.263.net
19
使用.NET外部组件发送 使用组件本质上是利用Socket直接和SMTP服务器进行交互,可以在ASP中使用的电子邮件组件,也可以在ASP.NET中使用。 比如Jmail组件等。在.NET中,目前最常用的电子邮件组件是用C#写的openSmtp组件。
20
使用组件发送电子邮件 案例名称:使用组件发送电子邮件 程序名称:5-11.aspx
language="C#" %> Import Namespace="OpenSmtp.Mail" %> <script runat="server"> private void Page_Load(object sender, System.EventArgs e){ try { MailMessage msg = new MailMessage("发送人地址", "接收人地址"); msg.Charset = "GB2312"; msg.Subject = "smtp组件发送邮件"; msg.Body = "邮件内容"; Smtp smtp = new Smtp("SMTP服务器地址", //SMTP地址 "用户名", //验证的用户名 "密码"); //密码 smtp.SendMail(msg); Response.Write("邮件发送成功!"); } catch(Exception ex) { System.Console.WriteLine("Error occured: " + ex.Message + "r\n" + ex); </script>
21
使用System.Net命名空间 案例名称:利用机器名查找该站点的IP地址 程序名称:5-12.aspx
Language="C#"%> NameSpace="System.Net"%> <script runat=server> protected void mybuttonClick(Object Src, EventArgs E){ IPHostEntry hostInfo = Dns.GetHostByName(txtDomain.Text); showmsg.Text=hostInfo.AddressList[0].ToString(); } </script> <asp:Label runat=server id=showmsg/> <form runat=server> 请输入域名:<asp:TextBox runat=server id=txtDomain/> <asp:Button runat=server id=mybutton Text="确定" onClick=mybuttonClick/> </form>
22
利用IP地址查找该站点的机器名 案例名称:利用IP地址查找该站点的机器名 程序名称:5-13.aspx
Language="C#"%> NameSpace="System.Net"%> <script language="C#" runat=server> protected void mybuttonClick(Object Src, EventArgs E){ IPHostEntry hostInfo = Dns.GetHostByAddress(txtIP.Text); showmsg.Text=hostInfo.HostName; } </script> <asp:Label runat=server id=showmsg/> <form runat=server> 要查找的IP地址:<asp:TextBox runat=server id=txtIP/> <asp:Button runat=server id=mybutton Text="查找" onClick=mybuttonClick /> </form>
23
小结 本章对框架的部分类做了介绍。着重介绍了使用System.IO操作文件和目录
介绍了使用System.Drawing实现图形的绘制,使用System.web.Security进行字符的加密 使用System.web.Mail类进行电子邮件处理,使用System.Net命名空间对网络进行操作。
24
本章习题 5-1 Directory和DirectoryInfo类有什么区别和联系?
5-2 如何创建一个文本文件,并写入一些字符串?(上机完成) 5-3 GDI+是什么?有什么功能? 5-4 ASP.NET中如何实现字符的加密?(上机完成) 5-5 如何使用ASP.NET发送电子邮件?(上机完成) 5-6 如何检测服务器的80端口是否开放?(上机完成)
Similar presentations