標籤:bsp copy 中文 異常 資料轉送 讀寫 建構函式 pat 一個
檔案流建立檔案流
讀寫檔案的第一步就是建立檔案流,流是一個用於資料轉送的個對象,它是FileStream類型,在建立一個檔案流是需要在他的構造中指定參數
文法:
FileStream 檔案流對象=new FileStream( String filePath,FileMode fileMode);
其中filePath用於指定要操作的檔案,fileMode用於指定檔案的開啟檔案,它是一個枚舉類型,
fileMode的常用成員如下:
- Create:用指定的名稱建立一個檔案,如果檔案已存在則覆蓋原有的檔案
- CreateNew:建立一個檔案,如果檔案已存在會報異常提示檔案已存在
- Open:開啟一個檔案,使用這個枚舉是檔案必須已存在,否則會報異常
- OpenOrCreate:與Open成員類似,如果檔案不存在則用指定的名稱建立一個檔案並開啟它
- Appen:開啟現有檔案,並在末尾追加新的內容。
小提示:“\”在C#中表示轉譯,所以我們在寫檔案路徑是不能直接以這樣的形式寫(“D:\files”),我們可以在“”號的前面加一個@符號來取消轉譯,也可以用”\\”來代替“\”
檔案讀寫器
建立檔案流之後,我們要建立讀取器或者寫入器,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修飾 |
只包含靜態成員 |
可以包含靜態成員 |
不可以包含執行個體成員 |
可以包含執行個體成員 |
使用類名調用靜態成員 |
使用執行個體對象調用非靜態成員 |
不能被執行個體化 |
可以被執行個體化 |
不能包含執行個體建構函式 |
包含執行個體建構函式 |
C#IO流檔案操作