C#作為一門高級編程語言,在很多領域都有着廣泛的應用,其中文件的讀寫便是其中一個比較常見的應用場景。本文將從多個方面對C#寫文件進行詳細闡述。
一、文件讀寫的基本概念
C#提供了System.IO命名空間,該命名空間下的File和FileStream類都可以用於文件的讀寫。其中,File類中提供了諸如AppendAllText、WriteAllLines、ReadAllText等方法,方便了我們對文件的讀寫操作。而FileStream類則更為常用,它提供了豐富的文件讀寫操作方法,如Read、ReadAsync、Write、WriteAsync等方法。
在進行文件讀寫之前,我們需要先打開文件。File.Open和FileStream構造函數都可以用於文件的打開。其中,File.Open返回FileStream對象,參數分別為文件名、文件打開方式、文件訪問方式。而FileStream構造函數則直接傳入文件名、文件打開方式和文件訪問方式即可。
在文件讀寫過程中,我們需要注意的是,文件讀寫時需要進行資源的釋放。FileStream類實現了IDisposable接口,因此使用using語句可以方便地釋放文件資源。
using (FileStream fs = File.Create("example.txt")) // 創建文件
{
// 文件操作
}
二、文件讀寫的實際應用
CBA賽程
在擁有CBA直播版權的網站中,我們通常可以看到CBA賽程的頁面。如果需要將該頁面的賽程內容保存到本地,可以使用WinHttpRequest類進行頁面的下載,然後使用正則表達式或HtmlAgilityPack庫來解析HTML頁面,獲取其中的賽程信息。接着,使用FileStream.Write方法將賽程信息寫入文件即可。
// 下載頁面
WinHttpRequest request = new WinHttpRequest();
request.Open("GET", "http://cba.sports.sina.com.cn/schedule.php", false);
request.Send();
// 解析HTML並獲取賽程信息
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(request.ResponseText);
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//table[@class='schedule']//td");
// 寫入文件
using (FileStream fs = File.Create("cba_schedule.txt"))
{
foreach (HtmlNode node in nodes)
{
string text = node.InnerText.Trim().Replace("\n", "") + " ";
byte[] data = Encoding.UTF8.GetBytes(text);
fs.Write(data, 0, data.Length);
}
}
Coach
在使用Visual Studio進行開發時,經常需要將一些代碼風格設置為全局共用,而不是每個文件都進行單獨設置。可以使用Visual Studio的”Export Settings”功能將代碼風格設置導出,並保存為.vssettings文件。該文件可以使用FileStream類進行讀寫操作,方便我們進行代碼風格設置的備份和恢復。
// 讀取.vssettings文件
using (FileStream fs = File.OpenRead("settings.vssettings"))
{
byte[] data = new byte[fs.Length];
fs.Read(data, 0, data.Length);
string content = Encoding.UTF8.GetString(data);
}
// 寫入.vssettings文件
using (FileStream fs = File.Create("settings.vssettings"))
{
byte[] data = Encoding.UTF8.GetBytes(content);
fs.Write(data, 0, data.Length);
}
CCTV5節目表
通過爬蟲程序,我們可以從CCTV5官網上獲取節目表,並保存到本地文件中。使用HttpWebRequest或WebClient類來獲取網頁的HTML源代碼,接着使用正則表達式或htmlagilitypack庫解析HTML頁面,獲取其中的節目表信息,並將信息保存到文件中。
// 獲取HTML源代碼
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://tv.cctv.com/cctv5/");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream resStream = response.GetResponseStream();
StreamReader reader = new StreamReader(resStream, Encoding.UTF8);
string html = reader.ReadToEnd();
// 解析HTML並獲取節目表信息
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//table[@class='pgList']//td");
string program = "";
foreach (HtmlNode node in nodes)
{
program += node.InnerText.Trim();
byte[] data = Encoding.Default.GetBytes(program);
fs.Write(data, 0, data.Length);
}
三、其他相關概念
Chat GPT人工智能
Chat GPT人工智能模型是目前比較火熱的人工智能技術之一,可以根據用戶輸入的問題進行自動回答。如果需要將用戶的問題和回答記錄到本地文件中,可以使用FileStream寫入文本文件,每行一條記錄。具體的代碼實現如下:
// 寫入記錄到文本文件
using (FileStream fs = new FileStream("chat.log", FileMode.Append, FileAccess.Write))
{
using (StreamWriter sw = new StreamWriter(fs))
{
sw.WriteLine("{0}\t{1}", question, answer);
}
}
CCTV5在線直播
在使用CCTV5在線直播時,有時候需要將直播的視頻截圖保存到本地文件,以供用戶觀看回放。可以使用System.Drawing.Bitmap類來獲取當前屏幕的截圖,接着使用Bitmap.Save方法將截圖保存到本地文件中。
Bitmap bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
Graphics g = Graphics.FromImage(bmp);
g.CopyFromScreen(new Point(0, 0), new Point(0, 0), bmp.Size);
bmp.Save("cctv5_live.jpg", ImageFormat.Jpeg);
C1駕照能開什麼車
在C1駕照考試中,需要掌握不同車型的駕駛技術和相關知識。如果需要將這些知識點保存在本地文件中,供學習時參考,可以使用FileStream類寫入文本文件,每行一個知識點。
// 寫入知識點到文本文件
string[] knowledge = new string[]
{
"嚴禁在道路上亂扔垃圾或者煙蒂",
"在特定的橋樑上行使時,應按規定的限速行駛",
"在通過鐵路道口時,應該先停車查看有無火車通過",
"夜間超車時,不能直接跟在被超車輛的後面",
"識別車身位置"
};
using (FileStream fs = new FileStream("C1_knowledge.txt", FileMode.OpenOrCreate, FileAccess.Write))
{
using (StreamWriter sw = new StreamWriter(fs))
{
foreach (string item in knowledge)
{
sw.WriteLine(item);
}
}
}
C反應蛋白高說明什麼
如果需要將醫學知識點保存到本地文件中,可以使用FileStream類寫入文本文件,每行一條知識點。例如C反應蛋白高說明什麼,可以將其保存在名為”medical.txt”的文件中。
// 寫入醫學知識點到文本文件
string knowledge = "C反應蛋白(c-reactive protein,CRP)是一種體內生成的敏感而具特異性的炎症標誌物。 \n" +
"當人體發生炎症過程,C反應蛋白會迅速升高。 \n" +
"C反應蛋白的測定可以用作炎性疾病的診斷、病程監測以及相關疾病的預後評估";
using (FileStream fs = new FileStream("medical.txt", FileMode.Append, FileAccess.Write))
{
using (StreamWriter sw = new StreamWriter(fs))
{
sw.WriteLine(knowledge);
}
}
CP是什麼意思?
在軟件、管理等領域,常常會用到CP這個縮寫,如CPI、CPC、CPL等。如果需要將這些縮寫的完整解釋保存到本地文件中,可以使用FileStream類寫入文本文件,每行一個縮寫及其含義。
// 寫入縮寫到文本文件
string cp = "CP - 單價,即Cost Per \n" +
"CPI - 人均消費指數,即Consumer Price Index\n" +
"CPC - 點擊付費,即Cost Per Click\n" +
"CPL - 慈善捐款,即Cost Per Lead";
using (FileStream fs = new FileStream("management.txt", FileMode.OpenOrCreate, FileAccess.Write))
{
using (StreamWriter sw = new StreamWriter(fs))
{
sw.WriteLine(cp);
}
}
CBA
CBA作為中國籃球職業聯賽,每年都吸引了大批籃球迷的關注。如果需要將CBA歷史上比賽的記錄保存到本地文件中,可以使用FileStream類寫入文本文件,每行一個比賽記錄。其中,比賽記錄需要包含比賽時間、對陣雙方、比分分數等信息。
// 寫入比賽記錄到文本文件
string[] records = new string[]
{
"2021/01/05 北京VS深圳 120:118",
"2020/12/30 廣東VS山東 98:97",
"2020/12/26 上海VS浙江 115:109",
"2020/12/22 廣州VS天津 102:75",
"2020/12/18 江蘇VS四川 112:99"
};
using (FileStream fs = new FileStream("cba_matches.txt", FileMode.Append, FileAccess.Write))
{
using (StreamWriter sw = new StreamWriter(fs))
{
foreach (string item in records)
{
sw.WriteLine(item);
}
}
}
原創文章,作者:BBWI,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/131829.html