ASP.NET文件操作

  在开发Web程序时,不但有存储在数据库中和XML文件中的数据形式需要处理,而且还有很多诸如文本、Word文档和图片等格式的文件数据需要处理。尤其是在一些信息管理系统中,文档的处理流程贯穿了整个系统的运行过程。

  文件的操作有很多种,如创建文件、复制文件、删除文件等,这些都是文件最基本的操作,.NET框架提供了一个静态类File来完成这些操作。

  文件的I/O操作是一个比较复杂的过程。在.NET框架下,文件的I/O操作方式都是基于流(Stream)的,由于引进了流的概念,程序员可以通过对一系列的通用对象进行操作,而不必关心该I/O操作是和本机的文件有关还是与网络中的数据有关,这使得对于文件操作的编程变得非常简单,这大大减轻了程序员的工作。

  .NET框架主要提供了一个System.IO命名空间,该命名空间基本包含了所有和I/O操作相关的类,因此在程序员开发文件操作的程序时需要引用该命名空间。

文件基本操作

  在.NET框架里文件的基本操作基本上都是由静态类File来完成,File类提供了一系列的方法来完成这些操作。File类提供的方法如下:

    1.AppendText:创建一个StreamWriter,它将UTF-8编码文本追加到现有文件。

    2.Copy:将现有文件复制到新文件。

    3.Create:在指定路径中创建文件。

    4.CreateText:创建或打开一个文件用于写入UTF-8编码的文本。

    5.Delete:删除指定的文件。如果指定的文件不存在,则不引发异常。

    6.Exists:确定指定的文件是否存在。

    7.Move:将指定的文件移到新位置,并提供指定新文件名的选项。

    8.Open:打开指定路径上的FileStream。

    9.OpenRead:打开现有文件以进行读取。

    10.OpenText:打开现有UTF-8编码文本文件以进行读取。

    11.OpenWrite:打开现有文件以进行写入。

  创建文件。

    新建项目,添加页面Default.aspx,在Default.aspx.cs中,在头文件中引用命名空间:using System.IO;;Page_Load事件中的代码如下:

1         protected void Page_Load(object sender, EventArgs e)
2         {
3             StreamWriter streamWriter = File.CreateText(Server.MapPath("file1.txt"));
4             streamWriter.Write("新创建的文件。");
5             streamWriter.Close();
6         }

    

      运行项目,在网站根目录下创建一个file1.txt文件,文件内容为:新创建的文件。

    复制文件

      Page_Load事件中的代码如下:

1         protected void Page_Load(object sender, EventArgs e)
2         {
3             if (File.Exists(Server.MapPath("file1.txt")))
4             {
5                 File.Copy(Server.MapPath("file1.txt"), Server.MapPath("file2.txt"));
6             }
7         }

    删除文件

      Page_Load事件中的代码如下:

1         protected void Page_Load(object sender, EventArgs e)
2         {
3             if (File.Exists(Server.MapPath("file2.txt")))
4             {
5                 File.Delete(Server.MapPath("file2.txt"));
6             }
7         }

文件的IO操作

  在.NET框架中,文件的I/O操作是基于流的,而Stream类是所有流的抽象基类。Stream类及其派生类提供这些不同类型的输入和输出的一般视图,使程序员不必了解操作系统和基础设备的具体细节。

  Stream类提供了对I/O操作的基本方法的定义,所有从该类派生出来的类,可以根据实际需要来实现相应的方法。

  Stream类提供的方法如下:

    1.BeginRead:开始异步读操作。

    2.BeginWrite:开始异步写操作。

    3.Close:关闭当前流并释放与之相关联的所有资源。

    4.EndRead:等待挂起的异步读取完成。

    5.EndWriter:结束异步写操作。

    6.Flush:当在派生类中重写时,将清除该流的所有缓冲区,并使得所有缓冲区数据被写入到基础设备。

    7.Read:当在派生类中重写时,从当前流读取字节序列,或者如果已到达流的末尾,则返回-1。

    8.Seek:当在派生类中重写时,设置当前流中的位置。

    9.SetLength:当在派生类中重写时,设置当前流的长度。

    10.Writer:当在派生类中重写时,向当前流中写入字节序列,并将此流中的当前位置提升写入的字结数。

    11.WriteByte:将一个字节写入流内的当前位置,并将流内的位置向前推进一个字节。

  在.NET里面,由Stream派生出5种主要的流:

    1.FileStream:支持对文件的顺序和随机读写操作。

    2.MemoryStream:支持对内存缓冲区的顺序和随机读写操作。

    3.NETworkStream:支持对Internet网络资源的顺序和随机读写操作,存在于System.Net.Sockets命名空间。

    4.CryptoStream:支持数据的编码和解码,存在于 System.Security.Cryptography 名称空间。

    5.BufferedStream:支持缓冲式的读写。

    程序员可以根据自己的需要选择相应的流来实现文件的I/O操作。

  创建文件。

    新建项目,添加页面Default.aspx,在Default.aspx.cs中,在头文件中引用命名空间:using System.IO;;Page_Load事件中的代码如下:

1         protected void Page_Load(object sender, EventArgs e)
2         {
3             string string1 = "使用流创建的文档。";
4             FileStream fileStream = new FileStream(Server.MapPath("file1.txt"), FileMode.OpenOrCreate);
5             System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
6             fileStream.Write(encoding.GetBytes(string1), 0, encoding.GetByteCount(string1));
7             fileStream.Close();
8         }

    读取文件

      Page_Load事件中的代码如下:

 1         protected void Page_Load(object sender, EventArgs e)
 2         {
 3             FileStream fileStream = new FileStream(Server.MapPath("file1.txt"), FileMode.OpenOrCreate);
 4             System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
 5             if (fileStream.Length != 0)
 6             {
 7                 Byte[] byte1 = new byte[fileStream.Length];
 8                 fileStream.Read(byte1, 0, Convert.ToInt32(fileStream.Length.ToString()));
 9                 fileStream.Close();
10                 Response.Write(encoding.GetString(byte1));
11             }
12         }

文件上传

  ASP.NET提供了一个文件上传控件(FileUpload控件),该控件可以让用户更方便地浏览和选择用户上传的文件。该控件包含一个浏览按钮和用于输入文件名的文本框。只要用户在文本框中输入了完全限定的文件名,无论是直接输入还是通过“浏览”按钮选择,都可以调用该控件的SaveAs方法把文件保存到服务器上。

  FileUpload控件提供了如下表所示的属性:

    1.FileBytes:从使用FileUpload控件指定的文件中返回一个字节数组。

    2.FileContent:返回一个指向上传文件的流对象。

    3.FileName:返回要上传文件的名称,不包含路径信息。

    4.HasFile:指明该控件是否包含文件,返回true表明该控件有文件要上传。

    5.PostedFile:返回已经上传文件的引用,类型为HttpPostedFile.

  HttpPostedFile类的属性如下:

    1.ContentLength:返回上传文件的按字节表示的文件大小。

    2.ContentType:返回上传文件的MIME内容类型。

    3.FileName:返回上传文件在客户端的完全限定名。

    4.InputStream:返回一个指向上传文件的流对象。

  FileUpload控件提供了一个方法SaveAs,该方法用来把上传的文件保存到服务器上的指定路径。

  用户使用FileUpload控件选择要上传的文件并提交页面后,该文件作为请求的一部分上传。文件将被完整地缓存在服务器内存中,文件完成上传后,就要在服务器代码中处理上传的文件,可以按照以下三种方式来处理内存中的文件:

    1.作为在FileUpload控件的FileBytes属性中公开的字节数组。

    2.作为在FileConten属性中公开的流。

    3.作为PostedFile属性中类型为HttpPostedFile的对象。

  在代码运行时,可以检查文件的特征,如文件的名称、大小和MIME类型,然后保存该文件。在保存文件之前检查文件的特征,可以把存在危害的文件忽略掉,以保证服务器的安全。

  文件上传的处理步骤如下:

    1.向页面添加FileUpload控件。

    2.在事件处理程序中,执行操作。

    3.检测FileUpload控件的HasFile属性。

    4.检查该文件的文件名或MIME类型,以确保用户上传了服务器能接收的文件。

    5.保存文件。

  文件上传

    新建项目,添加页面Default.aspx,在页面中添加如下代码:

1     <div>
2         <asp:FileUpload ID="FileUpload1" runat="server" />
3         <asp:Button ID="Button1" runat="server" Text="上传" OnClick="Button1_Click" />
4         <br />
5         <asp:Label ID="Label1" runat="server" />
6     </div>

    Default.aspx.cs中的代码如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.IO;
 4 using System.Linq;
 5 using System.Web;
 6 using System.Web.UI;
 7 using System.Web.UI.WebControls;
 8
 9 namespace WebApplication2
10 {
11     public partial class WebForm1 : System.Web.UI.Page
12     {
13         protected void Page_Load(object sender, EventArgs e)
14         {
15         }
16
17         protected void Button1_Click(object sender, EventArgs e)
18         {
19             Boolean isOk = false;
20             string filePath = Server.MapPath("~/UploadedFiles/Images/");
21             if (FileUpload1.HasFile)
22             {
23                 string fileExtension = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
24                 string[] allowedExtensions = { ".gif", ".png", ".jpeg", ".jpg", ".ico" };
25                 for (int i = 0; i < allowedExtensions.Length; i++)
26                 {
27                     if (fileExtension.ToString () == allowedExtensions[i].ToString())
28                     {
29                         isOk = true;
30                     }
31                 }
32             }
33             if (isOk)
34             {
35                 try
36                 {
37                     FileUpload1.PostedFile.SaveAs(filePath + FileUpload1.FileName);
38                     Label1.Text="文件上传成功。";
39                 }
40                 catch (Exception ex)
41                 {
42                     Label1.Text="文件上传失败。";
43                 }
44             }
45             else
46             {
47                 Label1.Text="不支持的文件类型。";
48             }
49         }
50     }
51 }

时间: 2024-12-27 22:35:25

ASP.NET文件操作的相关文章

Asp.Net 文件操作基类

using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.T

ASP.NET文件操作通用类

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 using System.IO; 7 using System.Web; 8 using System.Web.UI; 9 using System.Web.UI.WebControls; 10 11 12 public class WebFileHelper 13 { 14 15 FileInfo f

asp.net文件操作类

/** 文件操作类 **/ #region 引用命名空间 using System; using System.Collections.Generic; using System.Text; using System.IO; #endregion namespace CommonUtilities { /// <summary> /// 文件操作类 /// </summary> public class FileHelper { #region 检测指定目录是否存在 /// <

asp.net 文件操作小例子(创建文件夹,读,写,删)

静态生成要在虚拟目录下创建文件夹 来保存生成的页面 那么就要对文件进行操作 一.创建文件夹 using System.IO; string name = "aa"; string path = Server.MapPath("") + "\\" + name; if (Directory.Exists(path)) { Response.Write("<script>alert('文件夹已存在了!');history.go(

ASP.NET中的文件操作(文件信息,新建,移动,复制,重命名,上传,遍历)(亲测详细)

做了几天的文件操作,现在来总结一下,错误之处,还望指点!以文件为例,如果对文件夹操作,基本上将File换为Directory即可(例:FileInfo file = new FileInfo(Path);与DirectoryInfo directory = new DirectoryInfo (Path);) 1获取文件信息 在知道文件相对路径的情形,下面代码可以获取文件的详细信息 1 public static void fileinfo(string Path) 2 { 3 Path = S

PHP文件操作系统----主要的文件操作函数

一.文件操作系统概述 1.概述: php中的文件操作系统主要是对文件和目录的操作.文件在windows系统下分为3种不同:文件.目录.未知,在linux/unix系统下分为7种不同:block.char.dir.fifo.file.link和unknown七种类型.目录在windows系统:D:/a/b/c.php 或 D:\a\b\c.php,在linux/unix系统: /a/b/c.php,为统一建议使用"/"作为目录之间的分割符. 2.目录或文件属性获取函数 *(1)取得文件类

[C#] 常用工具类——文件操作类

/// <para> FilesUpload:工具方法:ASP.NET上传文件的方法</para> /// <para> FileExists:返回文件是否存在</para> /// <para> IsImgFilename:判断文件名是否为浏览器可以直接显示的图片文件名</para> /// <para> CopyFiles:复制指定目录的所有文件</para> /// <para> MoveFi

asp.Net文件的上传下载(2) 转

Asp.net 上传.下载文件 2011-01-08 16:21:48|  分类: .NET |  标签: |举报 |字号大中小 订阅 首先我们要判断用户是否选择了要上传文件,我们可用下面这句实现: if(File1.PostedFile.ContentLength>0)  如果用户有上传的文件,则:   string name = File1.PostedFile.FileName ;//获取输入的文件名字      int i= name.LastIndexOf(".") ;

asp.net文件/大文件上传需要配置的项目整理

asp.net程序默认上传文件是有大小限制的,默认是4M.IIS7下默认是30M.因此需要配置几个项目进行支持大文件(最大2G)的上传. 1.配置错误 说明: 在处理向该请求提供服务所需的配置文件时出错.请检查下面的特定错误详细信息并适当地修改配置文件. 分析器错误消息: 属性“maxRequestLength”的值无效.错误为: 该值必须在 0-2097151 范围内. 如果出现以下错误:   说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中