最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在C#中讀取文件的六種主流方法詳解

 更新時間:2025年11月23日 14:00:10   作者:降薪碼農(nóng)  
在 C# 中讀取文件有多種方法,不同方式適用于不同場景(小型文件、大型文件、文本文件或二進制文件),本文給大家介紹了 6 種主流方法以及其適用場景,需要的朋友可以參考下

在 C# 中讀取文件有多種方法,不同方式適用于不同場景(小型文件、大型文件、文本文件或二進制文件)。以下是 6 種主流方法及其適用場景:

方法1:File.ReadAllText(讀取整個文本文件)

string path = @"C:\Example\test.txt";
try
{
    string content = File.ReadAllText(path);
    Console.WriteLine(content);
}
catch (IOException ex)
{
    Console.WriteLine($"讀取失敗: {ex.Message}");
}

特點

  • 超簡單,單行代碼讀取全部
  • 僅適合小型文件(全部加載到內(nèi)存)
  • 適用于配置文件、JSON等小文件

方法2:File.ReadAllLines(按行讀取為數(shù)組)

string[] lines = File.ReadAllLines(path);
foreach (string line in lines)
{
    Console.WriteLine(line);
}

特點

  • 分行處理,適合日志文件
  • 同樣全量加載,內(nèi)存壓力大

方法3:StreamReader(逐行讀取,內(nèi)存友好)

using (StreamReader reader = new StreamReader(path))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        Console.WriteLine(line); // 逐行處理
    }
}

特點

  • 內(nèi)存效率高,適合大文件
  • 推薦用于日志文件、大型CSV

方法4:FileStream(二進制/字節(jié)讀取)

byte[] buffer = new byte[1024];
using (FileStream fs = new FileStream(path, FileMode.Open))
{
    int bytesRead;
    while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0)
    {
        string chunk = Encoding.UTF8.GetString(buffer, 0, bytesRead);
        Console.Write(chunk);
    }
}

特點

  • 適合二進制文件(如圖片、視頻)
  • 可控緩沖區(qū)大小

方法5:async/await(異步讀取,避免UI卡頓)

async Task ReadFileAsync(string path)
{
    using (StreamReader reader = new StreamReader(path))
    {
        string content = await reader.ReadToEndAsync();
        Console.WriteLine(content);
    }
}

// 調(diào)用
await ReadFileAsync(@"C:\largefile.txt");

特點

  • 不阻塞UI線程,WinForms/WPF必備
  • 適合網(wǎng)絡(luò)磁盤文件

方法6:MemoryMappedFile(超大型文件,內(nèi)存映射)

using (var mmf = MemoryMappedFile.CreateFromFile(path))
{
    using (var stream = mmf.CreateViewStream())
    {
        byte[] buffer = new byte[1024];
        stream.Read(buffer, 0, buffer.Length);
        string text = Encoding.UTF8.GetString(buffer);
        Console.WriteLine(text);
    }
}

特點

  • 處理GB級文件(如數(shù)據(jù)庫文件)
  • 高級場景使用

方法對比表

方法適用文件大小內(nèi)存占用速度適用場景
ReadAllText<10MB配置文件
ReadAllLines<10MB日志分析
StreamReader任意大型文本
FileStream任意可控二進制文件
async/await任意依實現(xiàn)UI程序
MemoryMappedGB+極低超大文件

注意事項

  1. 異常處理:始終用 try-catch 捕獲 FileNotFoundException 或 IOException
  2. 路徑安全
string safePath = Path.Combine("C:", "Folder", "file.txt"); // 避免手寫路徑
  • 編碼問題:指定正確的編碼(如中文用 Encoding.UTF8
File.ReadAllText(path, Encoding.GetEncoding("GB2312"));
  • 資源釋放:必須用 using 或手動釋放 FileStream/StreamReader

最佳實踐

  • 小型文本 → File.ReadAllText
  • 大型文本 → StreamReader + while
  • 二進制數(shù)據(jù) → FileStream
  • UI程序 → async/await + ReadToEndAsync
  • GB級文件 → MemoryMappedFile

以上就是在C#中讀取文件的六種主流方法詳解的詳細內(nèi)容,更多關(guān)于C#讀取文件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

滕州市| 甘肃省| 同仁县| 贺兰县| 伊金霍洛旗| 巴彦淖尔市| 绩溪县| 崇州市| 康保县| 北碚区| 北海市| 安国市| 广丰县| 宝兴县| 台东县| 集贤县| 马龙县| 昌平区| 龙泉市| 金华市| 蕉岭县| 昌宁县| 铜梁县| 屏山县| 英吉沙县| 滁州市| 上蔡县| 张掖市| 花莲市| 津南区| 新津县| 石狮市| 磐石市| 家居| 夏河县| 桓仁| 岳阳市| 奉贤区| 门源| 常德市| 五峰|