咱們知道,程序中的數據一般保存在內存中,當程序關閉時其對應的內存空間就會被釋放掉,也就是說咱們在程序中所做的操做或對數據的更改會在程序結束時自動刪除,沒辦法永久的保存,若是你想永久的保存這些數據,則能夠考慮使用數據庫或文件對這些數據在磁盤上進行存儲,數據庫適合存儲比較龐大的數據量當數據比較簡單時使用數據庫存儲操做複雜,且成本較高。而文件則適合對簡單數據進行存儲。好比不少程序的用戶配置信息都保存在文件中!數據庫
一般來說,用C#程序對鞋一個文件須要如下5個步驟框架
注意:在對文件進行操做以前須要引入IO命名空間函數
using System.IO;
這個命名空間用於對文件和文件流的處理編碼
讀寫文件的第一步就是建立文件流,流是一個用於數據傳輸的個對象,它是FileStream類型,在建立一個文件流是須要在他的構造中指定參數spa
FileStream 文件流對象=new FileStream( String filePath,FileMode fileMode);操作系統
其中filePath用於指定要操做的文件,fileMode用於指定文件的打開方式,它是一個枚舉類型,code
fileMode的經常使用成員以下:對象
小提示:「\」在C#中表示轉譯,因此咱們在寫文件路徑是不能直接以這樣的形式寫(「D:\files」),咱們能夠在「」號的前面加一個@符號來取消轉譯,也能夠用」\\」來代替「\」blog
建立文件流以後,咱們要建立讀取器或者寫入器,StreamWrite被稱爲寫入器只要將建立好的文件流傳入就能夠建立它的實例內存
StreamWriter sw=New StreamWriter(文件流對象);
建立好寫入器以後咱們就能夠調用他的方法向文件類文件流,其主要方法以下:
注意:當寫入器使用完畢後必定要調用Close()方法關閉寫入器,不然會發生要寫的內容沒法寫入文件的狀況。
StreamReader主要用於讀取流中的數據,它主要包含如下方法:
用StreamReader讀取文件中的中文文本,有事會出現亂碼問題。這並非C#語言的問題,有多是由於編碼格式的問題。在讀取文件是指定對應的編碼格式已解決亂碼問題。
如:StreamReader myfil=new StreamReader(文件流對象,Encoding.Default);
Encoding的靜態成員指定編碼格式。如:
File類的經常使用方法
返回值類型 | 方法名稱 | 說明 |
bool | Exists(string path) | 用於檢查指定文件是否存在 |
void | Copy(string sourceFilePath,string destinationFilePath) | 將指定路徑的原文件中的內容複製到目標文件中,若是目標文件不存在,則在指定路徑中新建一個文件 |
void | Move(string sourceFilePath,string destFileName) | 將制定問價移動到一個新的路徑 |
void | Delete(string path) | 刪除指定的文件,若是指定的文件不存在,則不引起異常 |
File類對文件進行操做而Directory類對目錄進行操做(文件夾)
Directory類的經常使用方法
返回值類型 | 方法名稱 | 說明 |
bool | Exists(string path) | 用於檢查指定文件夾在磁盤上是否存在 |
void | Move(string sourceDirName,string destDirName) | 用於將文件或目錄文件及其內容移到新位置 |
void | Delete(string path,bool recursive) | 刪除指定目錄,若是recursive值爲true,則刪除子目錄中的全部目錄內容 |
靜態類只含有靜態方法,不能使用new關鍵字建立靜態類的實例。
靜態類與非靜態類的區別
靜態類 非靜態類 用static修飾 不用static修飾 只包含靜態成員 能夠包含靜態成員 不能夠包含實例成員 能夠包含實例成員 使用類名調用靜態成員 使用實例對象調用非靜態成員 不能被實例化 能夠被實例化 不能包含實例構造函數 包含實例構造函數
提供實例方法的文件和目錄操做
前面的File類和Directory類都用靜態方法操做文件和目錄,其實.NET框架提供了用實例方法操做文件和目錄的類
FileInfo、DirectoryInfo和File、Directory相似均可以完成一樣的對文件或目錄的操做,可是FileInfo和DirectoryInfo類必須實例化對象,使用對象調用方法!