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

foreach (var line in File.ReadLines("example.txt")) { Console.WriteLine(line); }
- 代碼簡潔,可讀性強。
- 實際上是按需讀取(延遲加載),和
StreamReader
類似,並非一次性全部加載進內存。 - 適用於只需要遍歷一次的場景。
注意:如果你需要多次訪問文件內容,或者需要隨機訪問某一行,建議使用
File.ReadAllLines()
,但這會把整個文件加載到內存裡。
處理編碼問題的小細節
默認情況下, StreamReader
和File.ReadLines()
會嘗試自動識別文件的編碼格式,比如UTF-8 或Unicode。但在某些情況下,你可能需要指定特定的編碼方式:

using (var reader = new StreamReader("example.txt", Encoding.UTF8)) { // 讀取邏輯}
或者:
foreach (var line in File.ReadLines("example.txt", Encoding.UTF8)) { // 讀取邏輯}
- 如果你的文件包含中文或特殊字符,最好明確指定編碼,避免亂碼。
- 常見編碼包括
Encoding.UTF8
、Encoding.Default
、Encoding.GetEncoding("GBK")
等。
基本上就這些。選擇哪種方式取決於你的具體需求:是否關心性能、是否需要修改內容、是否要多次訪問等等。一般情況下,用File.ReadLines()
就夠用了;如果想更靈活控制讀取過程,就用StreamReader
。
以上是如何在C#中按行讀取文本文件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

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

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

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

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

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

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

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

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

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