テキストファイルを一度に読み込んでメモリに保持するC#とVisual Basic(VB)のサンプルコードを紹介します。
うん十年前まではPCのメモリが少なかったので、一行ごとに読むサンプルコードが多かったと思います。
今では、PCメモリも潤沢にある場合が多いので、一気に読み込んだ方が効率的でしょうね。
この記事では、ReadAllText,ReadAllLinesの2つのメソッドを使ったサンプルコードを紹介します。
ReadAllTextは読み込んだテキストをString変数に格納します。
ReadAllLinesは読み込んだテキストをString配列変数に格納します。
C#とVisual Basic(VB)のサンプルコードを以下に紹介します。
using System; class Program { static void Main(string[] args) { System.Text.Encoding enc; String f = @"C:\Windows\System32\drivers\etc\hosts"; if (!System.IO.File.Exists(f)) { Console.WriteLine(f + "not found!"); return; } enc = System.Text.Encoding.GetEncoding(932); // Shift_JIS String alltext; String[] allLines; alltext = System.IO.File.ReadAllText(f); allLines = System.IO.File.ReadAllLines(f); Console.WriteLine("-- ReadAllText --"); Console.WriteLine(alltext); Console.WriteLine("-- ReadAllText line:" + allLines.Length + " --"); foreach (String l in allLines) { Console.WriteLine(l); } } }
Module Module1 Sub Main() Dim enc As System.Text.Encoding Dim f As String = "C:\Windows\System32\drivers\etc\hosts" If Not (System.IO.File.Exists(f)) Then Console.WriteLine(f & "not found!") Exit Sub End If enc = System.Text.Encoding.GetEncoding(932) ' Shift_JIS Dim alltext As String Dim allLines As String() alltext = System.IO.File.ReadAllText(f) allLines = System.IO.File.ReadAllLines(f) Console.WriteLine("-- ReadAllText --") Console.WriteLine(alltext) Console.WriteLine("-- ReadAllText line:" & allLines.Count & " --") For Each l In allLines Console.WriteLine(l) Next End Sub End Module
ReadAllTextとReadAllLinesのサンプルコードを実行したときの出力になります。
本サンプルにより、以下の2つが確認できます。
以上、ReadAllText,ReadAllLinesメソッドを使ったテキストファイルの読込サンプルコードの紹介でした。