国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

ASP.NET文件操作

2019-11-14 15:46:06
字體:
來源:轉載
供稿:網友

  在開發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         }
View Code

    

      運行項目,在網站根目錄下創建一個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         }
View Code

    刪除文件

      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         }
View Code

文件的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         }
View Code

    讀取文件

      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         }
View Code

文件上傳

  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>
View Code

    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 Webapplication210 {11     public partial class WebForm1 : System.Web.UI.Page12     {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                 try36                 {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 }
View Code

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嘉兴市| 宣威市| 黔南| 昌乐县| 延寿县| 新龙县| 正定县| 滨海县| 普格县| 荥阳市| 万山特区| 二连浩特市| 揭阳市| 宝应县| 栖霞市| 乌兰察布市| 通海县| 延安市| 从化市| 奉节县| 涿州市| 焦作市| 宾川县| 安吉县| 富锦市| 盐山县| 城口县| 龙岩市| 江油市| 屏南县| 四子王旗| 和田县| 桦川县| 水城县| 巩留县| 繁昌县| 金平| 凌云县| 周至县| 华池县| 牡丹江市|