C#零基礎入門篇(18. 文件操作指南)

## 一、文件操作基礎

在C#中,文件操作主要通過`System.IO`命名空間中的類來實現,例如`File`、`FileStream`、`FileInfo`等。

## 二、常用文件操作方法

### (一)文件讀取

1. **使用`File.ReadAllText`方法讀取文件內容為字符串**
? ? ```
? ? string content = File.ReadAllText("example.txt", Encoding.UTF8);
? ? Console.WriteLine(content);
? ? ```
2. **使用`File.ReadAllLines`方法讀取文件內容為字符串數組**
? ? ```
? ? string[] lines = File.ReadAllLines("example.txt", Encoding.UTF8);
? ? foreach (string line in lines)
? ? {
? ? ? ? Console.WriteLine(line);
? ? }
? ? ```
3. **使用`FileStream`讀取文件**
? ? ```
? ? FileStream file = new FileStream("example.txt", FileMode.Open, FileAccess.Read);
? ? byte[] buffer = new byte[1024 * 1024 * 5]; // 每次讀取5M的數據
? ? int bytesRead = file.Read(buffer, 0, buffer.Length);
? ? string str = Encoding.UTF8.GetString(buffer, 0, bytesRead);
? ? Console.WriteLine(str);
? ? file.Close();
? ? file.Dispose();
? ? ```

### (二)文件寫入

1. **使用`File.WriteAllText`方法創建或覆蓋文件并寫入文本**
? ? ```
? ? string filePath = "example.txt";
? ? string textToWrite = "Hello, World!";
? ? File.WriteAllText(filePath, textToWrite, Encoding.UTF8);
? ? ```
2. **使用`File.AppendAllText`方法追加文本到文件**
? ? ```
? ? File.AppendAllText("example.txt", "追加的文本內容\n", Encoding.UTF8);
? ? ```
3. **使用`FileStream`寫入文件**
? ? ```
? ? FileStream fileStream = File.Create("example.txt");
? ? byte[] content = Encoding.UTF8.GetBytes("寫入內容");
? ? fileStream.Write(content, 0, content.Length);
? ? fileStream.Close();
? ? ```

### (三)文件創建

1. **使用`File.Create`方法創建文件**
? ? ```
? ? string filePath = @"c:\myFile.txt";
? ? FileStream fileStream = File.Create(filePath);
? ? fileStream.Close();
? ? ```

### (四)文件復制

1. **使用`File.Copy`方法復制文件**
? ? ```
? ? string sourceFilePath = @"c:\myFile.txt";
? ? string destinationFilePath = @"d:\myFile_copy.txt";
? ? File.Copy(sourceFilePath, destinationFilePath);
? ? ```

### (五)文件移動

1. **使用`File.Move`方法移動文件**
? ? ```
? ? string sourceFilePath = @"c:\myFile.txt";
? ? string destinationFilePath = @"d:\myFile.txt";
? ? File.Move(sourceFilePath, destinationFilePath);
? ? ```

### (六)文件刪除

1. **使用`File.Delete`方法刪除文件**
? ? ```
? ? string filePath = @"d:\myFile.txt";
? ? File.Delete(filePath);
? ? ```

### (七)判斷文件是否存在

1. **使用`File.Exists`方法判斷文件是否存在**
? ? ```
? ? bool exists = File.Exists("example.txt");
? ? Console.WriteLine(exists ? "文件存在" : "文件不存在");
? ? ```

## 三、`FileInfo`類

`FileInfo`類提供了對文件的高級操作功能,以下是一些示例:

### (一)讀取文件

```
FileInfo fileInfo = new FileInfo("example.txt");
if (fileInfo.Exists)
{
? ? using (FileStream fs = fileInfo.OpenRead())
? ? {
? ? ? ? byte[] buffer = new byte[fs.Length];
? ? ? ? int bytesRead = fs.Read(buffer, 0, buffer.Length);
? ? ? ? Console.WriteLine($"讀取了 {bytesRead} 字節的數據。");
? ? }
}
else
{
? ? Console.WriteLine("文件不存在。");
}
```

### (二)復制文件

```
FileInfo sourceFile = new FileInfo("source.txt");
string destinationPath = "destination.txt";
if (sourceFile.Exists)
{
? ? FileInfo copiedFile = sourceFile.CopyTo(destinationPath, false); // 不允許覆蓋
? ? Console.WriteLine($"文件已復制到: {copiedFile.FullName}");
}
else
{
? ? Console.WriteLine("源文件不存在。");
}
```

## 四、注意事項

1. 在進行文件操作時,需要注意文件的路徑是否正確,以及是否有足夠的權限訪問文件。
2. 使用`FileStream`等流操作文件時,記得在操作完成后關閉流并釋放資源,可以使用`using`語句來自動管理資源。
3. 在讀取或寫入文件時,要注意文件的編碼格式,避免出現亂碼問題。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/898353.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/898353.shtml
英文地址,請注明出處:http://en.pswp.cn/news/898353.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

每日一題--內存池

內存池(Memory Pool)是一種高效的內存管理技術,通過預先分配并自主管理內存塊,減少頻繁申請/釋放內存的系統開銷,提升程序性能。它是高性能編程(如游戲引擎、數據庫、網絡服務器)中的核心優化手…

【Linux系統】Linux進程終止的N種方式

Linux系列 文章目錄 Linux系列前言一、進程終止的概念二、進程終止的場景三、進程終止的實現3.1 程序退出碼3.2 運行完畢結果正常3.3 運行完畢結果異常3.4 程序異常退出 總結 前言 進程終止是操作系統中,進程的一個重要階段,他標志著進程生命周期的結束…

正則表達式引擎深入探討

正則表達式引擎(Regular Expression Engine)是正則表達式得以“活起來”的核心。它是一個精密的軟件組件,負責接收正則表達式和輸入文本,解析模式并執行匹配或替換操作,最終輸出結果——可能是簡單的“是否匹配”&…

java面試題,什么是動態代理?、動態代理和靜態代理有什么區別?說一下反射機制?JDK Proxy 和 CGLib 有什么區別?動態代理的底層

什么是動態代理? 動態代理是在程序運行期,動態的創建目標對象的代理對象,并對目標對象中的方法進行功能性增強的一種技術。 在生成代理對象的過程中,目標對象不變,代理對象中的方法是目標對象方法的增強方法。可以理解…

【工具類】Java的 LocalDate 獲取本月第一天和最后一天

博主介紹:?全網粉絲22W,CSDN博客專家、Java領域優質創作者,掘金/華為云/阿里云/InfoQ等平臺優質作者、專注于Java技術領域? 技術范圍:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大數據、物…

嵌入式開發之STM32學習筆記day06

基于STM32F103C8T6的開發實踐——從入門到精通01 1. 引言 STM32系列微控制器是STMicroelectronics推出的一款高性能、低功耗的32位微控制器,廣泛應用于嵌入式系統中。STM32F103C8T6是其中非常受歡迎的一款,憑借其強大的性能、豐富的外設接口和低廉的價格…

學習使用 Git 和 GitHub 開發項目的教程推薦

Git 和 GitHub 是現代軟件開發中不可或缺的工具,無論你是個人開發者還是團隊成員,掌握它們都能極大提升效率。本文精選了一系列優質教程資源,涵蓋從基本 Git 命令到進階多人協作的內容。這些教程既有文字形式,也有視頻或交互式資源…

golang中的接口

1.簡介 在go中的接口是以一種類型,一種抽象的類型。接口(interface)是一組函數method的集合,go中的接口不能包含任何變量。在go中接口中的所有方法都沒有方法體,接口定義了一個對象的行為規范,只定義規范不實現。接口體現了程序的多態和高內聚低耦合的思想。go中的接口也是…

AI 浪潮下,職場的變與不變

如今,AI 如迅猛颶風,極速席卷職場,徹底攪亂了原有的秩序。你是否留意到,身邊的工作方式正悄然生變?今天,【探星 AI 研習社】就為大家深入剖析,AI 如何改寫職場劇本。無論你是大學生還是職場資深…

匯川EASY系列之以太網通訊(MODBUS_TCP做主站)

匯川Easy系列以太網通訊中(MODBUSTCP,plc做主站),終于可以不用使用指令就可以完成了,全程通過簡單的配置就可通訊。本文將通過EASY系列PLC與調試助手之間完成此操作。具體演示如下; 關于主站和從站的介紹 A/請求:即主動方 向被動方發送的一個要求的信息。 B/主站:發…

npm error gyp info

在使用 npm 安裝 Node.js 包時,可能會遇到各種錯誤,其中 gyp 錯誤是比較常見的一種。gyp 是 Node.js 的一個工具,用于編譯 C 代碼。這些錯誤通常發生在需要編譯原生模塊的 npm 包時。下面是一些常見的原因和解決方法: 常見原因及…

Oracle 19C分區表索引小結

一、大佬說(楊廷琨) LOCAL索引的最大好處是在進行分區操作,比如TRUNCATE PARTITION, DROP PARTITION時,不會出現索引INVALID的情況,不影響索引的可用性。由于GLOBAL索引所有的數據存儲在一起,因此當執行分…

AutoHub場景演示|帶您領略智能自動化操作的全新體驗

AutoHub是一款由OpenCSG推出的基于前沿大型語言模型(LLM)的瀏覽器自動化工具,旨在通過智能對話交互和自動化技術,幫助用戶更高效地瀏覽網頁和完成任務。它不僅能夠自動化繁瑣的網頁操作,還能夠為用戶提供精準的信息檢索…

深入解析 Linux 聲卡驅動:從架構到實戰

在嵌入式 Linux 設備中,音頻功能的實現離不開 Linux 聲卡驅動。而 ALSA (Advanced Linux Sound Architecture) 作為 Linux 內核的音頻框架,提供了一整套 API 和驅動模型,幫助開發者快速集成音頻功能。本篇文章以 WM8960 音頻編解碼器&#xf…

thinkphp5模型查詢數據庫,查出來的字段直接修改成另外的名字

在ThinkPHP5中,如果你希望在查詢數據庫時將返回的字段名直接修改為其他名稱,可以通過以下幾種方式實現: 方法1:使用 field 方法指定字段別名 在查詢時通過 field 方法直接為字段指定別名(使用 AS 關鍵字)。 示例代碼: // 使用Db類查詢 $result = Db::name(user)->…

關于前端指令

在前端開發中,指令(Directives)通常指在框架中使用的一種特殊的語法或機制,用于擴展 HTML 的功能。常見的指令主要存在于前端框架中,如 Vue.js、Angular 等。下面我們將分別介紹 Vue.js 和 Angular 中的常用指令&#…

虛擬地址空間(下)進程地址空間(上)

一.關于頁表組成 1.權限(rwx) 作用:如1.讓代碼區變成只讀的 2.寫時拷貝的實現:子進程創建時其頁表指向的父進程代碼和數據權限都是只讀的,子進程試圖修改,觸發錯誤,系統開始寫時拷貝。 來源:…

【區塊鏈 + 航運物流】豐溯 - 區塊鏈溯源平臺 | FISCO BCOS 應用案例

豐溯是順豐科技推出的區塊鏈溯源平臺, 采用 FISCO BCOS 底層開源框架, 為農副食品、 冷鏈生鮮等企業客戶及消費 者提供關鍵流通節點的溯源信息服務,形成從源頭到消費者端全鏈路透明的信息鏈。 在商貿消費領域, 溯源一直是保障產品…

iwebsec-SQL數字型注入

1.判斷是否存在漏洞 添加and 11發現正常顯示,添加and 12無回顯條目,則存在sql注入漏洞 2.因為有回顯,嘗試union聯合注入,使用order by判斷出有3個字段 3.使用union聯合注入查看回顯位,發現3三個字段均有回顯&#xff…

藍橋杯每日五題第一日

藍橋杯每日5題 問題一 班級活動 1.班級活動 - 藍橋云課 問題描述 小明的老師準備組織一次班級活動。班上一共有 nn 名 (nn 為偶數) 同學,老師想把所有的同學進行分組,每兩名同學一組。為了公平,老師給每名同學隨機分配了一個 nn 以內的正…