C# 簡單的文件流操作


文件是任何應用程序開發時必不可少的操作,.NET框架提供的文件操作基本都位於 System.IO 命名空間之下

我們就可以在該命名空間下通過相應的類進行文件、目錄以及數據流的操作

C# I/O 類

  • File 類:提供用於創建、復制、刪除、移動和打開文件的靜態方法

  • FileInfo 類:提供創建、復制、刪除、移動和打開文件夾的屬性和實例方法

  • FileStream 類:主要用於讀取磁盤上的文件或者向磁盤文件寫入信息

  • Path 類:主要是用來操作文件路徑

  • MemoryStream 類:主要用於操作內存中的數據

  • BufferedStream 類:主要也是用來處理流數據的,但是該類主要的功能是用來封裝其他流類

  • NetworkStream 類:主要是專門用來處理服務器與客戶端通信的流數據

  • StreamReader/StreamWriter 類:主要用來處理流數據,它們分別提供了高效的文本流讀取/寫入功能

  • Stream 類,TextReader 類,TextWrite 類,BinaryReader 類,BinaryWrite 類都繼承了 IDisposable 接口,所以使用后必須關閉流

File 和 FileInfo 類

這兩個類用來操作硬盤上的文件:

File 類主要通過靜態方法實現;而 FileInfo 類則是通過實例方法實現的

成員 說明
AppendText 創建一個 StreamWrite 類型,用於追加文本
Create 指定文件下創建或者覆蓋文件
Delete 刪除指定文件
Exists 檢查文件是否存在
Open 指定特有的讀取權限打開文件
OpenRead 以讀取的方式打開現有文件
OpenWrite 打開或者創建一個現有文件,以寫入文本
ReadAllText 讀取文件的所有行,然后關閉文件
WriteAllText 寫入指定的字符串,然后關閉文件

FileInfo 類的實例成員提供了和 File 類差不多的功能,在大多數情況下它們可以互換進行使用

但由於 File 類提供的方法都是靜態方法,使用的頻率較高

🙌🌰:

 1         static void Main(string[] args)
 2         {
 3             FileStream file;
 4             StreamWriter writer;
 5             // 文件路徑
 6             string path = "Test.txt";
 7             // 判斷文件是否存在
 8             if (!File.Exists(path))
 9             {
10                 // 創建指定文件
11                 file = File.Create(path);
12                 Console.WriteLine("新建一個文件:{0}", path);
13             }
14             else
15             {
16                 // 打開指定文件
17                 file = File.Open(path, FileMode.Open);
18                 Console.WriteLine("該文件已存在,直接打開文件");
19             }
20             // 寫入新的文本數據
21             writer = new StreamWriter(file);
22             writer.WriteLine("新增加的測試文本");
23             // 清除緩沖區並關閉對象
24             writer.Flush();
25             writer.Close();
26             // 關閉當前數據流
27             file.Close();
28             Console.ReadKey();
29         }

 Directory 和 DirectoryInfo 類

這兩個類都包含了用來創建、移動、刪除和枚舉所有目錄或者子目錄的成員

成員 說明
CreateDirectory 在指定路徑下創建目錄和子目錄
Delete 刪除指定目錄
Exists 檢查目錄是否存在
GetFiles 獲得目錄下所有文件名稱的數組
GetParent 獲得指定目錄的父目錄
GetCurrentDirectory 獲取應用程序當前的工作目錄
Move 移動目錄

DirectoryInfo 類的功能同樣與 Directory 類似,所以大多數情況下兩者可以互換進行使用

🙌🌰:

 1         static void Main(string[] args)
 2         {
 3             // 獲取當前目錄路徑
 4             string dirPath = Directory.GetCurrentDirectory();
 5             Console.WriteLine("當前路徑:" + dirPath);
 6             // 新文件路徑
 7             string filePath = string.Format("{0}/{1}", dirPath, "Test.txt");
 8             // 判斷路徑文件是否存在
 9             if (!Directory.Exists(dirPath))
10             {
11                 // 創建指定目錄
12                 Directory.CreateDirectory(dirPath);
13                 Console.WriteLine("創建一個新的目錄{0}", dirPath);
14             }
15             else
16                 Console.WriteLine("目錄{0}已存在", dirPath);
17             // 創建文件實例
18             FileInfo file = new FileInfo(filePath);
19             // 判斷文件是否存在
20             if (!file.Exists)
21             {
22                 // 創建指定文件
23                 file.Create();
24                 Console.WriteLine("創建一個新的文件");
25             }
26             else
27                 Console.WriteLine("該文件已存在");
28             // 獲取路徑下所有文件(包括路徑)
29             string[] files = Directory.GetFiles(dirPath, "*", SearchOption.AllDirectories);
30             Console.WriteLine("目錄{0}下共{1}個文件", dirPath, files.Length);
31             // 顯示所有文件名稱
32             for (int i = 0; i < files.Length; i++)
33             {
34                 DirectoryInfo fileInfo = new DirectoryInfo(files[i]);
35                 Console.WriteLine(fileInfo.Name);
36             }
37             Console.ReadKey();
38         }

流: Stream 類

流可以理解為內存中的字節序列,而 Stream 是所有流的抽象基類,每個具體的存儲實體都可以通過 Stream 派生類來實現

同樣的,流也涉及三個基本操作:

  • 對流進行讀取:將流中的數據讀取到具體的數據結構中

  • 對流進行寫入:把數據結構中的數據寫入到流中

  • 對流進行查找:對流內當前位置進行查詢和修改

成員 說明
CanRead 檢查當前流是否支持讀取操作
CanSeek 檢查當前流是否支持查找操作
CanWrite 檢查當前流是否支持寫入操作
Length 獲取用字節表示的流的長度
Position 設置當前流中的位置
BeginRead 開始異步讀操作
BeginWrite 開始異步寫操作
Close 關閉當前流並且釋放資源
EndRead 等待異步讀操作完成
EndWrite 等待異步寫操作完成
Flush 清除當前流的緩沖區,並且將數據寫入存儲設備
Write 向當前流寫入字節序列

 🙌🌰:

 1         static void Main(string[] args)
 2         {
 3             // 文件路徑
 4             string filePath = "Test.txt";
 5             // 創建或打開指定文件
 6             using (FileStream fileStream = File.Open(filePath, FileMode.OpenOrCreate))
 7             {
 8                 // 字符串數據
 9                 string msg = "Hello World!";
10                 // 寫入數據
11                 StreamWriter streamWrite = new StreamWriter(fileStream);
12                 Console.WriteLine("開始寫入數據");
13                 streamWrite.Write(msg);
14                 // 讀取數據
15                 Console.WriteLine("寫入的數據為:");
16                 StreamReader streamReader = new StreamReader(fileStream);
17                 string str = streamReader.ReadToEnd();
18                 Console.WriteLine(str);
19                 // 關閉當前流
20                 streamWrite.Close();
21                 streamReader.Close();
22             }
23             Console.ReadKey();
24         }

詳細的文件操作

文件操作包括但不限於文件的創建、刪除、移動、復制和查詢等操作

詳細的文件操作可以參考 ☛ 相應的博文內容

 

 

 

 

 

*** |  以上內容僅為學習參考、學習筆記使用  | ***


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM