C# File類中的文件讀寫方法詳解
C#
提供了多種操作文件的方案,File
類中封裝的靜態(tài)方法,接口封裝得比較人性化,隱藏了具體實現(xiàn)的細(xì)節(jié),主要包括讀取、寫入以及追加,這些函數(shù)如下
類別 | 字節(jié)讀寫 | 字符串列表 | 字符串 | |
---|---|---|---|---|
讀取 | ReadAllBytes | ReadAllLines | ReadAllText | ReadLines |
寫入 | WriteAllBytes | WriteAllLines | WriteAllText | |
追加 | AppendAllLines | AppendAllText | AppendText |
這些方法大部分都有其異步模式,以RaadAllBytes為例,其對應(yīng)的異步方法為ReadAllBytesAsync,即在后面加一個Async。
這些方法中,讀取操作需要至少輸入一個字符串,表示文件路徑,其返回值為字節(jié)數(shù)、字符串或者字符串列表;追加和寫入操作,至少需要輸入一個文件路徑以及將要寫入的內(nèi)容,根據(jù)函數(shù)類別不同,可以是字節(jié)數(shù)組、字符串或者字符串列表。
下面在頂級語句中,對這些函數(shù)做一些基礎(chǔ)的演示。
字節(jié)讀寫
ReadAllBytes和WriteAllBytes是用于讀寫字節(jié)數(shù)組的方法,
byte[] data = new byte[1024]; for (int i = 0; i < 1024; i++) data[i] = (byte)i; ???????File.WriteAllBytes("test.bin", data);
運行之后,將在運行目錄創(chuàng)建一個test.bin文件,接下來通過ReadAllBytes對其讀取。
data = File.ReadAllBytes("test.bin"); foreach (var d in data) Console.Write($"vvxyksv9kd, ");
其輸出結(jié)果為0-255的數(shù)字,類似下面這樣,這是在創(chuàng)建文件時,已經(jīng)把i轉(zhuǎn)換為了字節(jié),1個字節(jié)只有8位,最大值就是255。
...251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5...
字符串讀寫和追加
通過xxxAllText可以直接讀取文本文檔,這些函數(shù)提供了兩個重載,一種只需要輸入文件名和寫入內(nèi)容,另一種需要指定編碼方式。
File.WriteAllText("test.txt", "if u miss the train i'm on, "); File.AppendAllText("test.txt", "u will know that i'm gone"); var s = File.ReadAllText("test.txt"); Console.WriteLine(s);
輸出結(jié)果為
if u miss the train i'm on, u will know that i'm gone
如果指定編碼方式,盡管對英文來說可能無所謂,但編碼不匹配,可能導(dǎo)致出現(xiàn)亂碼,示例如下
File.WriteAllText("test.txt", "桃李春風(fēng)一杯酒"); File.AppendAllText("test.txt", "江湖夜雨十年燈", Encoding.Unicode); var s = File.ReadAllText("test.txt"); Console.WriteLine(s);
效果為
桃李春風(fēng)一杯酒_lVnY?ASt^op
字符串?dāng)?shù)組
xxxAllLines可以操作字符串?dāng)?shù)組,或以字符串為元素的其他可迭代對象。
string[] poem0 = new string[] { "我居北海君南海", "寄雁傳書謝不能" }; string[] poem1 = new string[] { "桃李春風(fēng)一杯酒", "江湖夜雨十年燈" }; File.WriteAllLines("lines.txt", poem0); File.AppendAllLines("lines.txt", poem1); var s = File.ReadAllLines("lines.txt"); foreach (var item in s) Console.WriteLine(item);
效果如下
我居北海君南海
寄雁傳書謝不能
桃李春風(fēng)一杯酒
江湖夜雨十年燈
到此這篇關(guān)于C# File類中的文件讀寫方法詳解的文章就介紹到這了,更多相關(guān)C#文件讀寫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用C#開發(fā)OPC?Server服務(wù)器源碼解析
OPC?Server服務(wù)器服務(wù)器的開發(fā)比較繁瑣,本示例采用C#提供了一種簡單快速實現(xiàn)OPCServer的方法,已經(jīng)在工程項目中應(yīng)用,本文對C#開發(fā)OPC?Server服務(wù)器相關(guān)知識給大家介紹的非常詳細(xì),需要的朋友參考下吧2022-06-06c# AcceptEx與完成端口(IOCP)結(jié)合的示例
這篇文章主要介紹了c# AcceptEx與完成端口(IOCP)結(jié)合的示例,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-03-03C#使用CallContext緩存線程數(shù)據(jù)
這篇文章介紹了C#使用CallContext緩存線程數(shù)據(jù)的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05C#跨PC遠(yuǎn)程調(diào)用程序并顯示UI界面
這篇文章主要為大家介紹了使用C#跨PC遠(yuǎn)程調(diào)用程序并顯示UI界面,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05C#中LINQ的Select與SelectMany函數(shù)使用
這篇文章主要介紹了C#中LINQ的Select與SelectMany函數(shù)使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08使用C#實現(xiàn)Windows組和用戶管理的示例代碼
這篇文章主要介紹了使用C#實現(xiàn)Windows組和用戶管理的示例代碼,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下2021-01-01