最新国产好看的视频,伊人天堂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)絡磁盤文件

方法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)容,更多關于C#讀取文件的資料請關注腳本之家其它相關文章!

相關文章

最新評論

中卫市| 兴隆县| 赤峰市| 福清市| 大悟县| 玉田县| 天水市| 上蔡县| 陈巴尔虎旗| 卢氏县| 三河市| 荣成市| 陆良县| 阳原县| 永城市| 平塘县| 乌兰县| 定州市| 抚松县| 襄垣县| 常德市| 成都市| 云安县| 眉山市| 博客| 双辽市| 奇台县| 黎川县| 枣庄市| 荥阳市| 汝南县| 沽源县| 临澧县| 博客| 乐至县| 杨浦区| 包头市| 年辖:市辖区| 革吉县| 明光市| 阿尔山市|