C#IO流文件操做

文件概述

咱們知道,程序中的數據一般保存在內存中,當程序關閉時其對應的內存空間就會被釋放掉,也就是說咱們在程序中所做的操做或對數據的更改會在程序結束時自動刪除,沒辦法永久的保存,若是你想永久的保存這些數據,則能夠考慮使用數據庫或文件對這些數據在磁盤上進行存儲,數據庫適合存儲比較龐大的數據量當數據比較簡單時使用數據庫存儲操做複雜,且成本較高。而文件則適合對簡單數據進行存儲。好比不少程序的用戶配置信息都保存在文件中!數據庫

如何對寫文件

一般來說,用C#程序對鞋一個文件須要如下5個步驟框架

  1. 建立一個文件流
  2. 建立閱讀器或寫入器
  3. 執行讀寫操做
  4. 關閉閱讀器或寫入器
  5. 關閉文件流

注意:在對文件進行操做以前須要引入IO命名空間函數

using System.IO;

這個命名空間用於對文件和文件流的處理編碼

文件流

建立文件流

讀寫文件的第一步就是建立文件流,流是一個用於數據傳輸的個對象,它是FileStream類型,在建立一個文件流是須要在他的構造中指定參數spa

語法:

FileStream 文件流對象=new FileStream( String filePath,FileMode fileMode);操作系統

其中filePath用於指定要操做的文件,fileMode用於指定文件的打開方式,它是一個枚舉類型,code

fileMode的經常使用成員以下:對象

  • Create:用指定的名稱新建一個文件,若是文件已存在則覆蓋原有的文件
  • CreateNew:新建一個文件,若是文件已存在會報異常提示文件已存在
  • Open:打開一個文件,使用這個枚舉是文件必須已存在,不然會報異常
  • OpenOrCreate:與Open成員相似,若是文件不存在則用指定的名稱新建一個文件並打開它
  • Appen:打開現有文件,並在末尾追加新的內容。

小提示:「\」在C#中表示轉譯,因此咱們在寫文件路徑是不能直接以這樣的形式寫(「D:\files」),咱們能夠在「」號的前面加一個@符號來取消轉譯,也能夠用」\\」來代替「\」blog

文件讀寫器

建立文件流以後,咱們要建立讀取器或者寫入器,StreamWrite被稱爲寫入器只要將建立好的文件流傳入就能夠建立它的實例內存

StreamWriter sw=New StreamWriter(文件流對象);

建立好寫入器以後咱們就能夠調用他的方法向文件類文件流,其主要方法以下:

  • StreamWriter.Write():用於寫入流,這個流是咱們建立好的流
  • StreamWriter.WriteLine():用於寫入一行數據,寫入某些數據後跟換行符
  • StreamWriter.Close():用於關閉寫入器

注意:當寫入器使用完畢後必定要調用Close()方法關閉寫入器,不然會發生要寫的內容沒法寫入文件的狀況。

StreamReader讀取器

StreamReader主要用於讀取流中的數據,它主要包含如下方法:

  • StreamReader.ReadLIne():讀取文件流中的一行數據,並返回字符串
  • StreamReader.ReadToEnd():從當前位置讀到末尾,返回字符串
  • StreamReader.Close();用於關閉讀取器。

解決亂碼問題

用StreamReader讀取文件中的中文文本,有事會出現亂碼問題。這並非C#語言的問題,有多是由於編碼格式的問題。在讀取文件是指定對應的編碼格式已解決亂碼問題。

如:StreamReader myfil=new StreamReader(文件流對象,Encoding.Default);

Encoding的靜態成員指定編碼格式。如:

  • Default表示獲取操做系統當前的編碼格式
  • UTF-8表示獲取UTF-8格式的編碼

文件和目錄操做

File和Directory類

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類必須實例化對象,使用對象調用方法!

相關文章
相關標籤/搜索