ASP.NET WP - 檔案操作



本章將介紹如何在您的網站中處理文字檔案。您可以使用文字檔案作為一種簡單的方法來儲存網站資料。

  • 文字檔案可以採用不同的格式,例如 *.txt、*.xml 或 *.csv。

  • 您可以使用 `File.WriteAllText` 方法指定要建立的檔案,然後向其中寫入資料。

  • 您可以讀取/寫入和移動文字檔案中的資料。

寫入資料到檔案

讓我們來看一個簡單的例子,我們將把學生資訊寫入文字檔案。首先,我們需要建立一個新的 CSHTML 檔案。

Student Information

在名稱欄位中輸入 `TextData.cshtml` 並單擊確定繼續。在這個例子中,我們將建立一個簡單的表單,使用者可以在其中輸入學生資訊,例如名字、姓氏和分數。

我們還需要在 `App_Data` 資料夾中建立一個名為 `Data.txt` 的文字檔案。

TextData CSHTML

讓我們替換 `TextData.cshtml` 檔案中的以下程式碼。

@{
   var result = "";
   
   if (IsPost){
      var firstName = Request["FirstName"];
      var lastName = Request["LastName"];
      var marks = Request["Marks"];
      var userData = firstName + "," + lastName + "," + marks + Environment.NewLine;
      var dataFile = Server.MapPath("~/App_Data/Data.txt");
      File.WriteAllText(@dataFile, userData);
      result = "Information saved.";
   }
}

<!DOCTYPE html>
<html>
   
   <head>
      <title>Write Data to a File</title>
   </head>
   
   <body>
      <form id = "form1" method = "post">
         
         <div>
            <table>
               <tr>
                  <td>First Name:</td>
                  <td><input id = "FirstName" name = "FirstName" type = "text" /></td>
               </tr>
               
               <tr>
                  <td>Last Name:</td>
                  <td><input id = "LastName" name = "LastName" type = "text" /></td>
               </tr>
               
               <tr>
                  <td>Marks:</td>
                  <td><input id = "Marks" name = "Marks" type = "text" /></td>
               </tr>
              
               <tr>
                  <td></td>
                  <td><input type="submit" value="Submit"/></td>
               </tr>
            </table>
         
         </div>
         
         <div>
            @if(result != ""){
               <p>Result: @result</p>
            }
         </div>
      
      </form>
      
   </body>
</html>

在程式碼中,我們使用了 `IsPost` 屬性來確定頁面是否已提交,然後再開始處理。`File` 物件的 `WriteAllText` 方法接受兩個引數:檔名路徑和要寫入檔案的實際資料。

現在讓我們執行這個應用程式並指定以下 URL:`https://:36905/TextData`,您將看到以下網頁。

Enter Data

讓我們在所有欄位中輸入一些資料。

Submit Button

現在點選提交按鈕。

Information Saved

正如您所看到的,資訊已儲存,現在讓我們開啟 `Data.txt` 檔案,您將看到資料已寫入檔案。

Data Txt

追加資料到現有檔案

為了將資料寫入文字檔案,我們使用了 `WriteAllText`。如果您再次呼叫此方法並傳遞相同的檔名,它將完全覆蓋現有檔案。但在大多數情況下,我們通常希望將新資料新增到檔案的末尾,所以我們可以使用 `File` 物件的 `AppendAllText` 方法來實現。

讓我們來看同一個例子,我們只需要將 `WriteAllText()` 更改為 `AppendAllText()`,如下面的程式所示。

@{
   var result = "";
   
   if (IsPost){
      var firstName = Request["FirstName"];
      var lastName = Request["LastName"];
      var marks = Request["Marks"];
      var userData = firstName + "," + lastName + "," + marks + Environment.NewLine;
      var dataFile = Server.MapPath("~/App_Data/Data.txt");
      File.AppendAllText(@dataFile, userData);
      result = "Information saved.";
   }
}

<!DOCTYPE html>
<html>
   
   <head>
      <title>Write Data to a File</title>
   </head>
   
   <body>
      <form id = "form1" method = "post">
         <div>
            
            <table>
               <tr>
                  <td>First Name:</td>
                  <td><input id = "FirstName" name = "FirstName" type = "text" /></td>
               </tr>
               
               <tr>
                  <td>Last Name:</td>
                  <td><input id = "LastName" name = "LastName" type = "text" /></td>
               </tr>
               
               <tr>
                  <td>Marks:</td>
                  <td><input id = "Marks" name = "Marks" type = "text" /></td>
               </tr>
               
               <tr>
                  <td></td>
                  <td><input type = "submit" value = "Submit"/></td>
               </tr>
            </table>
         </div>
         
         <div>
            @if(result != ""){
               <p>Result: @result</p>
            }
         </div>
      
      </form>
      
   </body>
</html>

現在讓我們執行應用程式並指定以下 URL `https://:36905/TextData`,您將看到以下網頁。

Some Data Enter

輸入一些資料並單擊提交按鈕。

現在當您開啟 `Data.txt` 檔案時,您將看到資料已追加到此檔案的末尾。

Append Data

從檔案中讀取資料

要從檔案讀取資料,您可以使用 `File` 物件,然後呼叫 `ReadAllLines()`,它將讀取檔案中的所有行。為此,讓我們建立一個新的 CSHTML 檔案。

Read Data

在“名稱”欄位中輸入 `ReadData.cshtml` 並單擊“確定”。

現在替換 `ReadData.cshtml` 檔案中的以下程式碼。

@{
   var result = "";
   Array userData = null;
   char[] delimiterChar = {','};
   var dataFile = Server.MapPath("~/App_Data/Data.txt");
   
   if (File.Exists(dataFile)) {
      userData = File.ReadAllLines(dataFile);
      if (userData == null) {
         // Empty file.
         result = "The file is empty.";
      }
   } else {
      // File does not exist.
      result = "The file does not exist.";
   }
}

<!DOCTYPE html>
<html>
   
   <head>
      <title>Reading Data from a File</title>
   </head>
   
   <body>
      <div>
         <h1>Reading Data from a File</h1>
         @result
         
         @if (result == "") {
            <ol>
               @foreach (string dataLine in userData) {
                  <li>
                     Student
                     <ul>
                        @foreach (string dataItem in dataLine.Split(delimiterChar)) {
                           <li>@dataItem</li >
                        }
                     </ul>
                  </li>
               }
            </ol>
         }
      </div>
   
   </body>
</html>

現在讓我們再次執行應用程式並指定以下 URL `https://:36905/ReadData`,您將看到以下網頁。

Reading Data File
廣告
© . All rights reserved.