Visual Basic 2005 または Visual Basic .NET で System.IO を使用してテキスト ファイルを読み取る方法

Microsoft Visual C# .NET については、次の資料を参照してください。306777
Microsoft Visual Basic 6.0 については、次の資料を参照してください。183638

概要

この資料では、テキスト ファイルから情報を取り出し、その情報を ArrayList クラスを使用して表示する方法を説明します。

Visual Basic 2005 または Visual Basic .NET でのテキスト ファイルの読み取り

ファイルに書き込む必要がない場合でも、読み取りアクセスでファイルを開いて読み取ることは、入力/出力 (IO) 機能の重要部分です。この例では読み取り用にファイルを開いていますが、この例はテキスト ファイルには有効であり、バイナリ ファイルには適切ではありません。この例では、ファイルを開くために使用できる多くのメソッドのうちの 1 つを使用します。ファイルから取得した情報を格納するために多くのデータ構造が利用できますが、ArrayList クラスは最も簡単に使用できるデータ構造です。この例では、ファイルを開いて読み取るために、System.IO 名前空間のオブジェクト、具体的には System.IO.StreamReader クラスのオブジェクトを使用します。


: この例を実行するには、読み取り元となる何らかのテキスト ファイル (.txt) が必要です。


Microsoft Visual Basic 2005 または Microsoft Visual Basic .NET からテキスト ファイルを読み込んで読み取るには、以下の手順を実行します。
  1. Microsoft Visual Studio 2005 または Microsoft Visual Studio .NET を起動します。Visual Basic で新しいコンソール アプリケーションを作成します。Visual Studio によって空の Main() プロシージャを持つモジュールが作成されます。
  2. プロジェクトが少なくとも System 名前空間を参照するようにします。System 名前空間、System.IO 名前空間、および System.Collections 名前空間で宣言を修飾しなくても済むように、これらの名前空間の Imports ステートメントを使用します。他のすべての宣言より前にこれらのステートメントを使用する必要があります。
    Imports System
    Imports System.IO
    Imports System.Collections
  3. 読み取り用のファイルを開くには、StreamReader オブジェクトの新しいインスタンスを作成して、次のようにファイルのパスをコンストラクタに渡します。
    Dim objReader As New StreamReader("c:\test.txt")
  4. 処理するファイルの各行を格納するための文字列変数が必要になります。これらの行を ArrayList に追加するので、同様にその型のオブジェクトを宣言して作成します。
    Dim sLine As String = ""
    Dim arrText As New ArrayList()
  5. ファイル全体を一度に読み取る ReadToEnd メソッドなど、ファイルを読み取る方法はいくつかあります。ただし、この例では、ReadLine メソッドを使用して、ファイルから一度に 1 行ずつ取り込んでいます。ファイルの終わりに達すると、このメソッドは "Nothing" を返し、これによってループを終了できます。ファイルから各行を読み取るときに、ArrayList の Add メソッドを使用して、ArrayList クラスに行を挿入できます。
    Do
    sLine = objReader.ReadLine()
    If Not sLine Is Nothing Then
    arrText.Add(sLine)
    End If
    Loop Until sLine Is Nothing
    objReader.Close()
  6. 次のように、"For Each" ループを使用して、新たに入力された ArrayList の内容をコンソールに出力します。
    For Each sLine In arrText
    Console.WriteLine(sLine)
    Next
    Console.ReadLine()
  7. コードを保存して実行すると、コンソールにファイルの内容が表示されます。

完全なコード リスト

Imports System
Imports System.IO
Imports System.Collections

Module Module1

Sub Main()
Dim objReader As New StreamReader("c:\test.txt")
Dim sLine As String = ""
Dim arrText As New ArrayList()

Do
sLine = objReader.ReadLine()
If Not sLine Is Nothing Then
arrText.Add(sLine)
End If
Loop Until sLine Is Nothing
objReader.Close()

For Each sLine In arrText
Console.WriteLine(sLine)
Next
Console.ReadLine()
End Sub

End Module

注意点

ファイル I/O を扱うときの注意点がいくつかあります。以下は注意点の一部です。
  • ファイルにアクセスするときは、読み取りまたは書き込みを行うファイルがシステム上に存在しないか、または使用中である可能性があります。
  • この例ではファイルを処理する前に、ファイル全体をメモリに読み取ります。ファイルが非常に大きくてメモリに保持できないか、またはファイルにアクセスする権限がない場合があります。
これらの状況が原因で例外が発生します。これらの一般的な問題を解決するためには try...catch ブロックを用意することが常に適切な方法です。

関連情報

詳細については、次の Microsoft .NET SDK クイック スタート チュートリアル Web サイトを参照してください。
Visual Basic .NET に関する、より一般的な情報については、以下の Usenet ニュースグループを参照してください。
プロパティ

文書番号:302309 - 最終更新日: 2006/10/03 - リビジョン: 1

フィードバック