C# 文件流讀寫方法彙總 C#讀寫txt文件的兩種方法介紹 C#文件流的讀寫

一、官方文檔:

文件和流I/O(輸入/輸出):

https://docs.microsoft.com/zh-cn/dotnet/standard/io/

文件流 FileStream

https://docs.microsoft.com/zh-cn/dotnet/api/system.io.filestream?view=net-5.0

文件流FileStream 官方案例:

https://docs.microsoft.com/zh-cn/dotnet/standard/io/how-to-read-and-write-to-a-newly-created-data-file

 

二、案例

案例一:https://www.cnblogs.com/akwwl/p/3240813.html

C#讀寫txt文件的兩種方法介紹

 

1.添加命名空間

  System.IO;

  System.Text;

2.文件的讀取

  (1).使用FileStream類進行文件的讀取,並將它轉換成char數組,然後輸出。

複製代碼
        byte[] byData = new byte[100];
        char[] charData = new char[1000];
        public void Read()
        {
            try
            {
                FileStream file = new FileStream("E:\\test.txt", FileMode.Open);
                file.Seek(0, SeekOrigin.Begin);
                file.Read(byData, 0, 100); //byData傳進來的字節數組,用以接受FileStream對象中的數據,第2個參數是字節數組中開始寫入數據的位置,它通常是0,表示從數組的開端文件中向數組寫數據,最後一個參數規定從文件讀多少字符.
                Decoder d = Encoding.Default.GetDecoder();
                d.GetChars(byData, 0, byData.Length, charData, 0);
                Console.WriteLine(charData);
                file.Close();
            }
            catch (IOException e)
            {
                Console.WriteLine(e.ToString());
            }
        }
    
複製代碼

  (2).使用StreamReader讀取文件,然後一行一行的輸出。

複製代碼
    public void Read(string path)
        {
            StreamReader sr = new StreamReader(path,Encoding.Default);
            String line;
            while ((line = sr.ReadLine()) != null) 
            {
                Console.WriteLine(line.ToString());
            }
        }
複製代碼

3.文件的寫入
  (1).使用FileStream類創建文件,然後將數據寫入到文件裏。

複製代碼
        public void Write()
        {
            FileStream fs = new FileStream("E:\\ak.txt", FileMode.Create);
            //獲得字節數組
            byte[] data = System.Text.Encoding.Default.GetBytes("Hello World!"); 
            //開始寫入
            fs.Write(data, 0, data.Length);
            //清空緩衝區、關閉流
            fs.Flush();
            fs.Close();
        }
複製代碼

  (2).使用FileStream類創建文件,使用StreamWriter類,將數據寫入到文件。

複製代碼
        public void Write(string path)
        {
            FileStream fs = new FileStream(path, FileMode.Create);
            StreamWriter sw = new StreamWriter(fs);
            //開始寫入
            sw.Write("Hello World!!!!");
            //清空緩衝區
            sw.Flush();
            //關閉流
            sw.Close();
            fs.Close();
        }
複製代碼

  以上就完成了,txt文本文檔的數據讀取與寫入。

 

案例二:https://www.cnblogs.com/zoujinhua/p/11325062.html

C#文件流的讀寫

1.文件流寫入的一般步驟

  1.定義一個寫文件流

  2.定義一個要寫入的字符串

  3.完成字符串轉byte數組

  4.把字節數組寫入指定路徑的文件

  5.關閉文件流

2.文件流讀入的一般步驟

  1.定義一個讀文件流

  2.開闢一塊足夠大的字節數組內存空間

  3.把指定文件的內容讀入字節數組

  4.完成字節數組轉字符串操作

  5.關閉文件流

具體代碼如下:

複製代碼
複製代碼
 1 using System;
 2 using System.IO;
 3 using System.Text;
 4 namespace LearnFileStream
 5 {
 6     class Program
 7     {
 8         string path = @"E:\AdvanceCSharpProject\LearnCSharp\LearnFileStream.txt";
 9 
10         private void TestWrite()
11         {
12             //定義寫文件流
13             FileStream fsw = new FileStream(path, FileMode.OpenOrCreate);
14             //寫入的內容
15             string inputStr = "Learn Advanced C Sharp";
16             //字符串轉byte[]
17             byte[] writeBytes = Encoding.UTF8.GetBytes(inputStr);
18             //寫入
19             fsw.Write(writeBytes, 0, writeBytes.Length);
20             //關閉文件流
21             fsw.Close();
22         }
23 
24         private void TestRead()
25         {
26             //定義讀文件流
27             FileStream fsr = new FileStream(path, FileMode.Open);
28             //開闢內存區域 1024 * 1024 bytes
29             byte[] readBytes = new byte[1024 * 1024];
30             //開始讀數據
31            int count = fsr.Read(readBytes, 0, readBytes.Length);
32             //byte[]轉字符串
33             string readStr = Encoding.UTF8.GetString(readBytes, 0, count);
34             //關閉文件流
35             fsr.Close();
36             //顯示文件內容
37             Console.WriteLine(readStr);
38         }
39         static void Main(string[] args)
40         {
41             new Program().TestWrite();
42             new Program().TestRead();
43         }
44     }
45 }
複製代碼

 

 1、FileStream 繼承自 Stream。
Stream 表示“流”(這個bai概念在計算機中非常常見,題主可以自行搜索相關資料),本質上是一種字節序列。說穿了,計算機只認識0和1,那麼這麼豐富多彩的文本、音樂、視頻,歸根結底都是轉換成字節存儲在內存與硬盤中的。
Stream 對象有一個屬性 Length,表示這個流的長度;還有一個屬性 Position,表示這個流當前的位置。
Stream.Read(byte[] array, int offset, int count);
array 表示緩衝區;offset 表示從流的當前位置(也就上面說的 Position)偏移多少個字節開始讀;count 表示讀取多少個字節。該方法返回的是實際上讀取了多少個字節(永遠小於等於 count),如果該值等於 0,說明已經到流的末尾了。讀取之後,這個流的 Position 就會發生變化。
爲什麼要緩衝區?因爲一個流很可能非常大,一次性的加載是不現實的,所以需要分塊來讀取,存儲每個分塊的這個字節數組就叫做“緩衝區”。
2、底層調用的是 kernel32.dll 中的 Windows API 方法 ReadFile()

 

C# 向文件末尾追加數據

  FileStream outputStream = null;

 outputStream = new FileStream(path, FileMode.Append);//Append決定outputStream.Write寫入時,是從頭開始覆蓋,還是從末尾追加。 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章