{"id":1185,"date":"2023-03-28T09:52:12","date_gmt":"2023-03-28T02:52:12","guid":{"rendered":"https:\/\/csharptutorial.net\/?page_id=1185"},"modified":"2023-03-28T10:04:48","modified_gmt":"2023-03-28T03:04:48","slug":"csharp-read-text-files","status":"publish","type":"page","link":"https:\/\/www.csharptutorial.net\/csharp-file\/csharp-read-text-files\/","title":{"rendered":"C# Read Text Files"},"content":{"rendered":"\n<p><strong>Summary<\/strong>: in this tutorial, you&#8217;ll learn various techniques to read text files in C# using <code><code>File.ReadAllText<\/code>()<\/code>, <code><code>File.ReadAllText<\/code>Async()<\/code>, <code><code>File.ReadAllLines<\/code>()<\/code>, <code><code>File.ReadAllLines<\/code>Async()<\/code> method, and <code>FileStream<\/code> class.<\/p>\n\n\n\n<p>C# provides various ways to allow you to read text files effectively. We&#8217;ll create a <code>readme.txt<\/code> file in the <code>C:\\temp\\<\/code> directory for the demonstration.<\/p>\n\n\n\n<p>The <code>readme.txt<\/code> file has two lines:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\">Hello\nBye<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Reading a text file into a string<\/h2>\n\n\n\n<p>If a text file is small, you can read all the file contents into a string using the <code><code>File.ReadAllText<\/code>()<\/code> <a href=\"https:\/\/csharptutorial.net\/csharp-tutorial\/csharp-static-method\/\">static method<\/a>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">string<\/span> <span class=\"hljs-title\">ReadAllText<\/span>(<span class=\"hljs-params\"><span class=\"hljs-keyword\">string<\/span> path<\/span>)<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The <code><code>File.ReadAllText<\/code>()<\/code> method opens a text file, reads all the text of the file into a string, and then closes the file.<\/p>\n\n\n\n<p>For example, the following program uses the <code><code>File.ReadAllText<\/code>()<\/code> method to read the contents in the <code>readme.txt<\/code> file and writes the text to the console:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">string<\/span> contents = File.ReadAllText(<span class=\"hljs-string\">@\"C:\\temp\\readme.txt\"<\/span>);\nConsole.WriteLine(contents);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>If the file is not found, the <code><code>File.ReadAllText<\/code>()<\/code> raises a <code><code>FileNotFoundException<\/code><\/code>. For example, the following program attempts to read a file <code>readme1.txt<\/code> from the <code>C:\\temp\\<\/code> directory, which doesn&#8217;t exist and handles the <code><code>FileNotFoundException<\/code><\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">try<\/span>\n{\n    <span class=\"hljs-keyword\">string<\/span> contents = File.ReadAllText(<span class=\"hljs-string\">@\"C:\\temp\\readme1.txt\"<\/span>);\n    Console.WriteLine(contents);\n}\n<span class=\"hljs-keyword\">catch<\/span> (FileNotFoundException e)\n{\n    Console.WriteLine(e.Message);\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\">Could not find file <span class=\"hljs-string\">'C:\\temp\\readme1.txt'<\/span>.<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Reading a text file into an array of string<\/h2>\n\n\n\n<p>If you want to process a small text file line by line, you can read its contents into an <a href=\"https:\/\/csharptutorial.net\/csharp-tutorial\/csharp-array\/\">array<\/a> of strings, where each array element stores a line in the text file. <\/p>\n\n\n\n<p>To read the contents of a text file into an array of strings, you use the <code><code>File.ReadAllLines<\/code>()<\/code> method:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">string<\/span>&#91;] <span class=\"hljs-title\">ReadAllLines<\/span> (<span class=\"hljs-params\"><span class=\"hljs-keyword\">string<\/span> path<\/span>)<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>For example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">string<\/span>&#91;] lines = File.ReadAllLines(<span class=\"hljs-string\">@\"C:\\temp\\readme.txt\"<\/span>);\n<span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-keyword\">var<\/span> line <span class=\"hljs-keyword\">in<\/span> lines)\n{\n    Console.WriteLine(line.ToUpperInvariant());\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\">HELLO\nBYE<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Reading a large text file line by line<\/h2>\n\n\n\n<p>If a text file is large, reading the entire text file into a string or an array of strings is not memory-optimized. <\/p>\n\n\n\n<p>In this case, you can read the contents of a text file using a stream and process the contents line by line.<\/p>\n\n\n\n<p>A stream represents a flow of data that you can read from. To read data from a file, you can create a <code>FileStream<\/code> and use a <code>StreamReader<\/code> to read data from the <code>FileStream<\/code>.<\/p>\n\n\n\n<p>Here are the steps:<\/p>\n\n\n\n<p>First, create a <code><code>FileStream<\/code><\/code> with the <code>FileMode<\/code>.Open using the <code><code>FileStream<\/code><\/code> class:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">var<\/span> fs = <span class=\"hljs-keyword\">new<\/span> FileStream(path, FileMode.Open);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Second, create a new <code>StreamReader<\/code> to read the contents of the <code>FileStream<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">var<\/span> reader = <span class=\"hljs-keyword\">new<\/span> StreamReader(fs);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Third, read the line from the <code><code>StreamReader<\/code><\/code> till the end of the stream. To check if the program reaches the end of the stream, you use the <code>reader.EndOfStream<\/code> property. To read a line from a <code><code>StreamReader<\/code><\/code>, you use the <code>ReadLine()<\/code> method.<\/p>\n\n\n\n<p>The following program demonstrates how to read the contents of the <code>readme.txt<\/code> line by line using a <code>FileStream<\/code> and <code>StreamReader<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">static<\/span> System.Console;\n\n<span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">var<\/span> fs = <span class=\"hljs-keyword\">new<\/span> FileStream(<span class=\"hljs-string\">@\"C:\\temp\\readme.txt\"<\/span>, FileMode.Open);\n<span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">var<\/span> reader = <span class=\"hljs-keyword\">new<\/span> StreamReader(fs);\n\n<span class=\"hljs-keyword\">while<\/span> (!reader.EndOfStream)\n{\n    <span class=\"hljs-keyword\">var<\/span> line = reader.ReadLine();\n    WriteLine(line?.ToUpperInvariant());\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-12\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\">HELLO\nBYE<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-12\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The program works fine but the code looks quite verbose. To make it more concise, you can use the <code><code>File.OpenText<\/code>()<\/code> static method. <\/p>\n\n\n\n<p>The <code><code>File.OpenText<\/code>()<\/code> method accepts a path and returns a new instance of the <code>StreamReader<\/code> class. Here&#8217;s the revised version of the above program:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-13\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">static<\/span> System.Console;\n\n<span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">var<\/span> reader = File.OpenText(<span class=\"hljs-string\">@\"C:\\temp\\readme.txt\"<\/span>);\n\n<span class=\"hljs-keyword\">while<\/span> (!reader.EndOfStream)\n{\n    <span class=\"hljs-keyword\">var<\/span> line = reader.ReadLine();\n    WriteLine(line?.ToUpperInvariant());\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-13\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>So these two lines:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-14\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">var<\/span> fs = <span class=\"hljs-keyword\">new<\/span> FileStream(<span class=\"hljs-string\">@\"C:\\temp\\readme.txt\"<\/span>, FileMode.Open);\n<span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">var<\/span> reader = <span class=\"hljs-keyword\">new<\/span> StreamReader(fs);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-14\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>become one:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-15\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">var<\/span> reader = File.OpenText(<span class=\"hljs-string\">@\"C:\\temp\\readme.txt\"<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-15\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Read all text into a string asynchronously<\/h2>\n\n\n\n<p>To read all contents of a text file into a string asynchronously, you use the <code><code>File.ReadAllTextAsync<\/code>()<\/code> method:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-16\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> Task&lt;<span class=\"hljs-keyword\">string<\/span>&gt; <span class=\"hljs-title\">ReadAllTextAsync<\/span> (<span class=\"hljs-params\">\n    <span class=\"hljs-keyword\">string<\/span> path, \n    CancellationToken cancellationToken = <span class=\"hljs-keyword\">default<\/span>\n<\/span>)<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-16\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>For example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-17\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">static<\/span> System.Console;\n\n<span class=\"hljs-keyword\">var<\/span> text = <span class=\"hljs-keyword\">await<\/span> File.ReadAllTextAsync(<span class=\"hljs-string\">@\"C:\\temp\\readme.txt\"<\/span>);\nWriteLine(text);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-17\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-18\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\">Hello\nBye<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-18\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Since the <code><code>File.ReadAllTextAsync<\/code>()<\/code> method returns a <code>Task&lt;String><\/code>, you need to use <code><a href=\"https:\/\/csharptutorial.net\/csharp-concurrency\/csharp-async-await\/\">await<\/a><\/code> keyword to wait for the task to complete and get the string result.<\/p>\n\n\n\n<p>Similarly, you can read all lines of a text file into an array of strings asynchronously using the <code><code>File.ReadAllLineAsync<\/code>()<\/code> static method:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-19\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> Task&lt;<span class=\"hljs-keyword\">string<\/span>&#91;]&gt; ReadAllLinesAsync (\n   <span class=\"hljs-keyword\">string<\/span> path,\n   CancellationToken cancellationToken = <span class=\"hljs-keyword\">default<\/span>\n);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-19\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>For example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-20\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">static<\/span> System.Console;\n\n<span class=\"hljs-keyword\">var<\/span> lines = <span class=\"hljs-keyword\">await<\/span> File.ReadAllLinesAsync(<span class=\"hljs-string\">@\"C:\\temp\\readme.txt\"<\/span>);\n<span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-keyword\">var<\/span> line <span class=\"hljs-keyword\">in<\/span> lines)\n{\n    WriteLine(line);\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-20\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Reading a text file with a specified encoding<\/h2>\n\n\n\n<p>By default, each of the <code>ReadAllText<\/code>, <code>ReadAllLines<\/code>, <code>ReadAllTextAsync<\/code>, and <code>ReadAllLineAsync<\/code> method has an overload that allows you to specify the encoding applied to the text of the file:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-21\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">string<\/span> <span class=\"hljs-title\">ReadAllText<\/span> (<span class=\"hljs-params\"><span class=\"hljs-keyword\">string<\/span> path, Encoding encoding<\/span>)<\/span>;\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">string<\/span>&#91;] <span class=\"hljs-title\">ReadAllLines<\/span> (<span class=\"hljs-params\"><span class=\"hljs-keyword\">string<\/span> path, Encoding encoding<\/span>)<\/span>;\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> Task&lt;<span class=\"hljs-keyword\">string<\/span>&gt; <span class=\"hljs-title\">ReadAllTextAsync<\/span> (<span class=\"hljs-params\"><span class=\"hljs-keyword\">string<\/span> path, Encoding encoding, CancellationToken cancellationToken = <span class=\"hljs-keyword\">default<\/span><\/span>)<\/span>;\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> Task&lt;<span class=\"hljs-keyword\">string<\/span>&#91;]&gt; ReadAllLinesAsync(<span class=\"hljs-keyword\">string<\/span> path, Encoding encoding, CancellationToken cancellationToken = <span class=\"hljs-keyword\">default<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-21\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p> In this syntax, the <code>Encoding<\/code> class belongs to the <code>System.Text<\/code> namespace.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Summary<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use the <code><code>File.ReadAllText<\/code>()<\/code> method to read the contents of a small text file into a string.<\/li>\n\n\n\n<li>Use the <code><code>File.ReadAllLines<\/code>()<\/code> method to read the contents of a small text file into an array of strings.<\/li>\n\n\n\n<li>Use the <code><code>File.ReadAllTextAsync<\/code>()<\/code> method to read the contents of a small text file into a string asynchronously.<\/li>\n\n\n\n<li>Use the <code><code>File.ReadAllLinesAsync<\/code>()<\/code> method to read all lines of a text file into an array of strings asynchronously.<\/li>\n<\/ul>\n<div class=\"helpful-block-content\" data-title=\"\">\n\t<header>\n\t\t<div class=\"wth-question\">Was this tutorial helpful ?<\/div>\n\t\t<div class=\"wth-thumbs\">\n\t\t\t<button\n\t\t\t\tdata-post=\"1185\"\n\t\t\t\tdata-post-url=\"https:\/\/www.csharptutorial.net\/csharp-file\/csharp-read-text-files\/\"\n\t\t\t\tdata-post-title=\"C# Read Text Files\"\n\t\t\t\tdata-response=\"1\"\n\t\t\t\tclass=\"wth-btn-rounded wth-yes-btn\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\tclass=\"feather feather-thumbs-up block w-full h-full\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\"\n\t\t\t\t\t><\/path>\n\t\t\t\t<\/svg>\n\t\t\t\t<span class=\"sr-only\"> Yes <\/span>\n\t\t\t<\/button>\n\n\t\t\t<button\n\t\t\t\tdata-response=\"0\"\n\t\t\t\tdata-post=\"1185\"\n\t\t\t\tdata-post-url=\"https:\/\/www.csharptutorial.net\/csharp-file\/csharp-read-text-files\/\"\n\t\t\t\tdata-post-title=\"C# Read Text Files\"\n\t\t\t\tclass=\"wth-btn-rounded wth-no-btn\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\"\n\t\t\t\t\t><\/path>\n\t\t\t\t<\/svg>\n\t\t\t\t<span class=\"sr-only\"> No <\/span>\n\t\t\t<\/button>\n\t\t<\/div>\n\t<\/header>\n\n\t<div class=\"wth-form hidden\">\n\t\t<div class=\"wth-form-wrapper\">\n\t\t\t<div class=\"wth-title\"><\/div>\n\t\t\t\n\t\t\t<textarea class=\"wth-message\"><\/textarea>\n\n\t\t\t<button class=\"btn btn-primary wth-btn-submit\">Send<\/button>\n\t\t\t<button class=\"btn wth-btn-cancel\">Cancel<\/button>\n\t\t\n\t\t<\/div>\n\t<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summary: in this tutorial, you&#8217;ll learn various techniques to read text files in C# using File.ReadAllText(), File.ReadAllTextAsync(), File.ReadAllLines(), File.ReadAllLinesAsync() method, and FileStream class. C# provides various ways to allow you to read text files effectively. We&#8217;ll create a readme.txt file in the C:\\temp\\ directory for the demonstration. The readme.txt file has two lines: Reading a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1182,"menu_order":6,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1185","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/pages\/1185","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/comments?post=1185"}],"version-history":[{"count":4,"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/pages\/1185\/revisions"}],"predecessor-version":[{"id":1192,"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/pages\/1185\/revisions\/1192"}],"up":[{"embeddable":true,"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/pages\/1182"}],"wp:attachment":[{"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/media?parent=1185"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}