C#文件操作之FileStream類詳解

首先要明確FileStream類操作的是字節和字節數組

常用構造函數介紹

最簡單的構造函數只有兩個參數,即文件名和FileMode枚舉值

FileStream(fliename , FileMode.<Member>)

另一個常用構造函數則有三個參數,第三個參數是FileAccess枚舉的一個成員,它指定了流的作用

FileStream(fliename , FileMode.<Member> ,FileAccess.<Member>)

FileMode枚舉成員:

成員 文件存在 文件不存在
Append 打開文件,流指向文件的末尾處,只能與枚舉FileAccess.Write結合使用 創建一個新文件。只能與枚舉FileAccess.Write結合使用
Create 刪除該文件,然後創建新文件 創建新文件
CreateNew 拋出異常 創建新文件
Open 打開文件,流指向文件開頭處 拋出異常
OpenOrCreate 打開文件,流指向文件開頭處 創建新文件
Truncate 打開文件,清除其內容。流指向文件開頭處,保留文件的初始創建日期 拋出異常

FileAccess枚舉成員:

成員 說明
Read 打開文件,用於只讀
Write 打開文件,用於只寫
ReadWrite 打開文件,用於讀寫

1.文件位置

FileStream類維護內部文件指針,該指針指向文件中進行下一次讀寫操作的位置。大多數情況下,當打開文件時,它就指向文件的開始位置,但是可以修改此指針,實現此功能的方法是Seek()方法。

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

例如:

FileStream file = File.OpenRead("config.txt");

file.Seek(6,SeekOrigin.Begin);//將文件指針移動到文件的第六個字節處,其起始位置就是文件的第一個字節

file.Seek(6,SeekOrigin.Current);//將指針從當前位置移動6個字節

file.Seek(-6,SeekOrigin.End);//將指針移動到文件的倒數第6個字節

2.讀取數據

使用Read()方法:從文件中讀取數據,再把數據寫入一個字節數組。

Read()有三個參數:第一個參數是傳入的字節數組,用來存放FileStream對象中的數據,第二個參數是字節數組中開始寫入數據的位置,通常是0,第三個參數指定從文件中讀取多少字節

FileStream file = new FileStream("home.txt",FileMode.Open);

byte[] byteData = new byte[1024];

file.Seek(10,SeekOrigin.Begin);

file.Read(byteData,0,1024);//從home.txt文件的第10個字節開始讀取1024個字節寫入byteData字節數組

3.寫入數據

使用Write()方法:從字節數組中讀取數據,再把數據寫入文件中。

和Read()方法一樣,Write()方法也是三個參數

上例中已經從home.txt文本中讀取了1024個字節到byteData字節數組中,我們再將這個數組的數據寫到新的文件中

FileStream newFile = new FileStream("Temp.txt",FileModel.Create);

newFile.Seek(0,SeekOrigin.Begin);

newFile.Write(byteData,0,byteData.Length);//將byteData字節數組裏的數據寫入到Temp.txt文件中,從第0個字節位置開始

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章