テキストファイルを一度に読み込んでメモリに保持する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メソッドを使ったテキストファイルの読込サンプルコードの紹介でした。