目錄
使用StreamReader逐行讀取
使用File.ReadLines()快速獲取所有行
處理編碼問題的小細節
首頁 後端開發 C#.Net教程 如何在C#中按行讀取文本文件?

如何在C#中按行讀取文本文件?

Aug 02, 2025 am 06:52 AM

在C# 中逐行讀取文本文件的常見方法有兩種:使用StreamReader 和File.ReadLines()。 1. 使用StreamReader 的ReadLine() 方法適合處理大文件,通過循環逐行讀取且內存友好,同時使用using 確保資源釋放;2. File.ReadLines() 提供簡潔代碼,適用於僅需遍歷一次的場景,支持延遲加載且可指定編碼。若需多次訪問文件內容,則推薦File.ReadAllLines()。兩者默認自動識別編碼,但為避免亂碼,建議根據需要顯式指定Encoding.UTF8、Encoding.Default 或其他特定編碼。選擇方式應基於性能需求、是否需靈活控制讀取過程及訪問頻率等因素。

How to read a text file line by line in C#?

在C# 中逐行讀取文本文件是一個很常見的需求,比如處理日誌、導入數據等場景。實現這個功能其實不難,但有幾種不同的方法,各自適用的場合也略有不同。

How to read a text file line by line in C#?

使用StreamReader逐行讀取

這是最常見也是推薦的方式之一。 StreamReader提供了ReadLine()方法,可以一行一行地讀取內容,適合處理大文件,因為它不會一次性把整個文件加載到內存中。

 using (var reader = new StreamReader("example.txt"))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        Console.WriteLine(line);
    }
}
  • 使用using確保資源正確釋放。
  • 每次調用ReadLine()都會返回下一行內容,直到返回null表示讀取完畢。
  • 這種方式對內存友好,適合處理大文件。

使用File.ReadLines()快速獲取所有行

如果你不需要復雜的邏輯,只是想遍歷每一行,可以用File.ReadLines()方法,它返回一個字符串集合,可以用於foreach遍歷。

How to read a text file line by line in C#?
 foreach (var line in File.ReadLines("example.txt"))
{
    Console.WriteLine(line);
}
  • 代碼簡潔,可讀性強。
  • 實際上是按需讀取(延遲加載),和StreamReader類似,並非一次性全部加載進內存。
  • 適用於只需要遍歷一次的場景。

注意:如果你需要多次訪問文件內容,或者需要隨機訪問某一行,建議使用File.ReadAllLines() ,但這會把整個文件加載到內存裡。

處理編碼問題的小細節

默認情況下, StreamReaderFile.ReadLines()會嘗試自動識別文件的編碼格式,比如UTF-8 或Unicode。但在某些情況下,你可能需要指定特定的編碼方式:

How to read a text file line by line in C#?
 using (var reader = new StreamReader("example.txt", Encoding.UTF8))
{
    // 讀取邏輯}

或者:

 foreach (var line in File.ReadLines("example.txt", Encoding.UTF8))
{
    // 讀取邏輯}
  • 如果你的文件包含中文或特殊字符,最好明確指定編碼,避免亂碼。
  • 常見編碼包括Encoding.UTF8Encoding.DefaultEncoding.GetEncoding("GBK")等。

基本上就這些。選擇哪種方式取決於你的具體需求:是否關心性能、是否需要修改內容、是否要多次訪問等等。一般情況下,用File.ReadLines()就夠用了;如果想更靈活控制讀取過程,就用StreamReader

以上是如何在C#中按行讀取文本文件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP教程
1596
276
使用C#中的任務並行庫(TPL) 使用C#中的任務並行庫(TPL) Jul 31, 2025 am 07:56 AM

C#的TPL通過Task類簡化並行任務處理。 1.使用Task.Run()或Task.Factory.StartNew()啟動任務,推薦前者;2.通過Task獲取結果,並用await或.Result等待完成;3.用Task.WhenAll()並行執行多個任務,注意資源競爭;4.通過AggregateException處理異常,捕穫後遍歷具體錯誤;5.使用CancellationTokenSource取消任務,適用於超時或用戶取消場景;同時需注意避免混合同步與異步代碼,防止死鎖問題。

如何在C#中按行讀取文本文件? 如何在C#中按行讀取文本文件? Aug 02, 2025 am 06:52 AM

在C#中逐行讀取文本文件的常見方法有兩種:使用StreamReader和File.ReadLines()。 1.使用StreamReader的ReadLine()方法適合處理大文件,通過循環逐行讀取且內存友好,同時使用using確保資源釋放;2.File.ReadLines()提供簡潔代碼,適用於僅需遍歷一次的場景,支持延遲加載且可指定編碼。若需多次訪問文件內容,則推薦File.ReadAllLines()。兩者默認自動識別編碼,但為避免亂碼,建議根據需要顯式指定Encoding.UTF8、Enc

利用C#進行科學計算和數據分析 利用C#進行科學計算和數據分析 Aug 05, 2025 am 06:19 AM

C#canbeusedforscientificcomputinganddataanalysisbysettingupaproperenvironment,leveragingrelevantlibraries,andoptimizingperformance.First,installVisualStudioorVSCodewiththe.NETSDKasthefoundation.Next,useNuGetpackageslikeMath.NETNumericsforlinearalgebr

選擇正確的C#收集類型以進行性能 選擇正確的C#收集類型以進行性能 Aug 01, 2025 am 03:47 AM

选择合适的集合类型能显著提升C#程序性能。1.频繁在中间插入或删除用LinkedList,2.快速查找用HashSet或Dictionary,3.元素数量固定优先用数组,4.需唯一值时选HashSet,5.查找频繁用Dictionary或SortedDictionary,6.多线程环境考虑ConcurrentBag或ConcurrentDictionary。

C#struct vs class績效比較 C#struct vs class績效比較 Aug 02, 2025 am 11:56 AM

struct不一定更快,性能取決於場景。 struct是值類型,賦值複製整個結構,class是引用類型,賦值僅複製引用。 struct通常分配在棧上,速度快但頻繁傳遞大結構會增加複制開銷,class分配在堆上涉及GC壓力。小struct適合高性能和緩存友好場景,大struct應避免或用ref/in傳遞。 struct數組內存緊湊利於緩存,class數組引用分散影響效率。優先用struct的場景:數據小、生命週期短、無需繼承或虛方法。避免用struct的場景:結構大、複雜邏輯、需多態、頻繁裝箱、需共享狀

C#中的靜態關鍵字是什麼? C#中的靜態關鍵字是什麼? Jul 30, 2025 am 02:24 AM

在C#中,static關鍵字用於定義屬於類型本身的成員,無需實例化即可訪問。 1.靜態變量被類的所有實例共享,適用於跟踪全局狀態,如記錄類的實例化次數;2.靜態方法屬於類而非對象,不能直接訪問非靜態成員,常用於工具類中的輔助函數;3.靜態類不能被實例化,僅包含靜態成員,適合組織無狀態的實用方法,但無法繼承或實現接口。使用時需注意內存管理和線程安全問題。

使用JSON和XML序列化C# 使用JSON和XML序列化C# Jul 31, 2025 am 04:12 AM

選擇JSON還是XML取決於應用場景:1.用JSON的情況包括WebAPI返回數據、前端交互、現代服務通信、輕量級配置;2.用XML的情況包括遺留系統兼容、需要命名空間支持、文檔型數據結構、企業級應用接口規範。 C#中,.NETCore默認使用System.Text.Json進行JSON序列化,性能更優,支持格式化輸出與空值保留;XML則通過XmlSerializer實現,適用於老項目,可自定義標籤名和命名空間,但不支持循環引用,需手動處理或換用其他庫。合理選擇並配置序列化方式,有助於應對不同開發

在C#中管理內存洩漏和垃圾收集 在C#中管理內存洩漏和垃圾收集 Aug 02, 2025 am 04:24 AM

內存洩漏在C#中確實存在且影響深遠,尤其對長期運行的應用程序。常見信號包括內存持續上升、GC頻繁但無明顯釋放,可通過VisualStudio、dotMemory等工具分析確認。主要原因及解決方法如下:1.忘記取消事件訂閱,應手動取消或使用弱引用;2.靜態集合未清理,需定期移除條目或使用WeakReference;3.未釋放非託管資源,應實現IDisposable並使用using語句。此外,理解分代式GC機制和優化內存使用如減少臨時對象創建、合理使用結構體、避免LOH碎片化也有助於提升性能。掌握這

See all articles