程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# FileStream文件讀寫

C# FileStream文件讀寫

編輯:C#入門知識

FileStream對象表示在磁盤或網絡路徑上指向文件的流。這個類提供了在文件中讀寫字節的方法,但經常使用StreamReader或StreamWriter執行這些功能。這是因為FileStream類操作的是字節和字節數組,而Stream類操作的是字符數據。字符數據易於使用,但是有些操作,比如隨機文件訪問(訪問文件中間某點的數據),就必須由FileStream對象執行,稍後對此進行介紹。

還有幾種方法可以創建FileStream對象。構造函數具有許多不同的重載版本,最簡單的構造函數僅僅帶有兩個參數,即文件名和FileMode枚舉值。

 

FileStream aFile = new FileStream(filename, FileMode.Member);

 

FileMode枚舉有幾個成員,規定了如何打開或創建文件。稍後介紹這些枚舉成員。另一個常用的構造函數如下:

 

FileStream aFile = new FileStream(filename, FileMode.Member, FileAccess. Member);

 

第三個參數是FileAccess枚舉的一個成員,它指定了流的作用。FileAccess枚舉的成員如表22-6所示。

表  22-6

成   員

說    明

Read

打開文件,用於只讀

Write

打開文件,用於只寫

ReadWrite

打開文件,用於讀寫

對文件進行不是FileAccess枚舉成員指定的操作會導致拋出異常。此屬性的作用是,基於用戶的身份驗證級別改變用戶對文件的訪問權限。

在FileStream構造函數不使用FileAccess枚舉參數的版本中,使用默認值FileAccess. ReadWrite。

FileMode枚舉成員如表22-7所示。使用每個值會發生什麼,取決於指定的文件名是否表示已有的文件。注意這個表中的項表示創建流時該流指向文件中的位置,下一節將詳細討論這個主題。除非特別說明,否則流就指向文件的開頭。

表  22-7
 

 

成    員

文 件 存 在

文件不存在

Append

打開文件,流指向文件的末尾,只能與枚舉FileAccess.Write聯合使用

創建一個新文件。只能與枚舉FileAccess.Write聯合使用

Create

刪除該文件,然後創建新文件

創建新文件

CreateNew

拋出異常

創建新文件

Open

打開現有的文件,流指向文件的開頭

拋出異常

OpenOrCreate

打開文件,流指向文件的開頭

創建新文件

Truncate

打開現有文件,清除其內容。流指向文件的開頭,保留文件的初始創建日期

拋出異常

 

 

 

 

 

 

 

 

 

 

 

 

File和FileInfo類都提供了OpenRead()和OpenWrite()方法,更易於創建FileStream對象。前者打開了只讀訪問的文件,後者只允許寫入文件。這些都提供了快捷方式,因此不必以FileStream構造函數的參數形式提供前面所有的信息。例如,下面的代碼行打開了用於只讀訪問的Data.txt文件:

 

FileStream aFile = File.OpenRead("Data.txt");

 

注意下面的代碼執行同樣的功能:

 

FileInfo aFileInfo = new FileInfo("Data.txt");
FileStream aFile = aFile.OpenRead();

 

1. 文件位置

FileStream類維護內部文件指針,該指針指向文件中進行下一次讀寫操作的位置。在大多數情況下,當打開文件時,它就指向文件的開始位置,但是此指針可以修改。這允許應用程序在文件的任何位置讀寫,隨機訪問文件,或直接跳到文件的特定位置上。當處理大型文件時,這非常省時,因為馬上可以定位到正確的位置。

實現此功能的方法是Seek()方法,它有兩個參數:第一個參數規定文件指針以字節為單位的移動距離。第二個參數規定開始計算的起始位置,用SeekOrigin枚舉的一個值表示。Seek Origin枚舉包含3個值:Begin、Current和End。

例如,下面的代碼行將文件指針移動到文件的第8個字節,其起始位置就是文件的第1個字節:

 

aFile.Seek(8,SeekOrigin.Begin);

 

下面的代碼行將指針從當前位置開始向前移動2個字節。如果在上面的代碼行之後執行下面的代碼,文件指針就指向文件的第10個字節:

 

aFile.Seek(2,SeekOrigin.Current);

 

注意讀寫文件時,文件指針也會改變。在讀取

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved