C# File類中的文件讀寫(xiě)方法詳解
C#提供了多種操作文件的方案,File類中封裝的靜態(tài)方法,接口封裝得比較人性化,隱藏了具體實(shí)現(xiàn)的細(xì)節(jié),主要包括讀取、寫(xiě)入以及追加,這些函數(shù)如下
| 類別 | 字節(jié)讀寫(xiě) | 字符串列表 | 字符串 | |
|---|---|---|---|---|
| 讀取 | ReadAllBytes | ReadAllLines | ReadAllText | ReadLines |
| 寫(xiě)入 | WriteAllBytes | WriteAllLines | WriteAllText | |
| 追加 | AppendAllLines | AppendAllText | AppendText |
這些方法大部分都有其異步模式,以RaadAllBytes為例,其對(duì)應(yīng)的異步方法為ReadAllBytesAsync,即在后面加一個(gè)Async。
這些方法中,讀取操作需要至少輸入一個(gè)字符串,表示文件路徑,其返回值為字節(jié)數(shù)、字符串或者字符串列表;追加和寫(xiě)入操作,至少需要輸入一個(gè)文件路徑以及將要寫(xiě)入的內(nèi)容,根據(jù)函數(shù)類別不同,可以是字節(jié)數(shù)組、字符串或者字符串列表。
下面在頂級(jí)語(yǔ)句中,對(duì)這些函數(shù)做一些基礎(chǔ)的演示。
字節(jié)讀寫(xiě)
ReadAllBytes和WriteAllBytes是用于讀寫(xiě)字節(jié)數(shù)組的方法,
byte[] data = new byte[1024];
for (int i = 0; i < 1024; i++)
data[i] = (byte)i;
???????File.WriteAllBytes("test.bin", data);
運(yùn)行之后,將在運(yùn)行目錄創(chuàng)建一個(gè)test.bin文件,接下來(lái)通過(guò)ReadAllBytes對(duì)其讀取。
data = File.ReadAllBytes("test.bin");
foreach (var d in data)
Console.Write($"wppm3vysvbp, ");其輸出結(jié)果為0-255的數(shù)字,類似下面這樣,這是在創(chuàng)建文件時(shí),已經(jīng)把i轉(zhuǎn)換為了字節(jié),1個(gè)字節(jié)只有8位,最大值就是255。
...251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5...
字符串讀寫(xiě)和追加
通過(guò)xxxAllText可以直接讀取文本文檔,這些函數(shù)提供了兩個(gè)重載,一種只需要輸入文件名和寫(xiě)入內(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
如果指定編碼方式,盡管對(duì)英文來(lái)說(shuō)可能無(wú)所謂,但編碼不匹配,可能導(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ù)組,或以字符串為元素的其他可迭代對(duì)象。
string[] poem0 = new string[] { "我居北海君南海", "寄雁傳書(shū)謝不能" };
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);
效果如下
我居北海君南海
寄雁傳書(shū)謝不能
桃李春風(fēng)一杯酒
江湖夜雨十年燈
到此這篇關(guān)于C# File類中的文件讀寫(xiě)方法詳解的文章就介紹到這了,更多相關(guān)C#文件讀寫(xiě)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Unity使用攝像機(jī)實(shí)現(xiàn)望遠(yuǎn)鏡效果
這篇文章主要為大家詳細(xì)介紹了Unity攝使用像機(jī)實(shí)現(xiàn)望遠(yuǎn)鏡效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11
C#獲取文件、文件夾和驅(qū)動(dòng)器的信息示例詳解
在C#中,文件、文件夾和驅(qū)動(dòng)器是文件系統(tǒng)操作的基本元素,了解如何獲取這些元素的信息對(duì)于開(kāi)發(fā)文件處理和管理工具至關(guān)重要,本文將詳細(xì)介紹如何在C#中獲取有關(guān)文件、文件夾和驅(qū)動(dòng)器的信息,并提供相應(yīng)的示例,需要的朋友可以參考下2024-08-08
C#運(yùn)算符之與,或,異或及移位運(yùn)算小結(jié)
本文是對(duì)C#中的與,或,異或及移位運(yùn)算進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-10-10
WPF使用DrawingContext實(shí)現(xiàn)繪制刻度條
這篇文章主要為大家詳細(xì)介紹了如何利用WPF DrawingContext實(shí)現(xiàn)繪制刻度條,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定幫助,感興趣的小伙伴可以了解一下2022-09-09
C#定制Excel界面并實(shí)現(xiàn)與數(shù)據(jù)庫(kù)交互的方法
這篇文章主要介紹了C#定制Excel界面并實(shí)現(xiàn)與數(shù)據(jù)庫(kù)交互的方法的相關(guān)資料,需要的朋友可以參考下2015-11-11
C#實(shí)現(xiàn)簡(jiǎn)單的JSON序列化功能代碼實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)簡(jiǎn)單的JSON序列化功能,大家可以參考使用2013-11-11
C#先判斷是否存在再創(chuàng)建文件夾或文件與遞歸計(jì)算文件夾大小
這篇文章介紹了C#先判斷是否存在再創(chuàng)建文件夾或文件與遞歸計(jì)算文件夾大小的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07

