MENU > HOME VB.NET VB6 VBA ソフトウェア リンク サイト情報
VB.NET> VB.NET 突撃レポート > 1  2  3  4  5  6  7  8  9  10  11  12 
PART6: ファイルの入出力 その3 (2002年3月24日)

今日はファイルの書き込みについて取り上げていきたいと思います。

前回では System.IO.File クラスを使用したテキストファイルの読み込みを行いました。
例ではデータを1行毎に取得してテキストボックスにセットしていましたが、ファイルの内容を丸ごと読み込むこともできるということもほんの少しだけ触れて いましたね。

以下がそのコード例です。
 
Dim reader As StreamReader = New StreamReader("D:\TEST.TXT", System.Text.Encoding.Default)
If reader.Peek() <> -1 Then
    TextBox1.Text = reader.ReadToEnd
End If
reader.Close()
reader = Nothing

このコードを見て「あれ?」と思った方もいらっしゃると思います。

1行目の StreamReader クラスの宣言時になにやら長ったらしいコードがおまけでついています。
これも前回少し触れましたが、VB.NETでは 変数の定義と初期化を一度に行う事ができます。
前回の例では Dim A As Short = 1 と書きましたが、今回のはこれが 通常のデータ型ではなくクラスになっただけです。
(VB.NETでは通常のデータ型に見えるものもクラスなんですけどね。)

さて、読み込みができたなら、書き込みもたやすいことです。いきなり書いてしまいましょう。
(読み込みを行うクラスが StreamReader なら、書き込みを行うクラスは StreamWriter です。)

と思いましたが、どうせならもう少しアプリケーションらしくメニューなんかをつけてみましょう。
ツールボックスより MainMenu を選択して貼り付けます。
以下の図を参考にメニューを設定してください。(メニュー名は変更しないでおきます)

メニューの編集はずいぶんと楽になったものです。

では、コーディングです。
(開くメニューではファイルを開き、上書き保存メニューではファイルへ書き込み、閉じるメニューでフォームを閉じます。)

 
Private Sub MenuItem5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem5.Click
    '-- フォームを閉じる
    Me.Close()
End Sub

Private Sub MenuItem2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
    '-- ファイルを読み込む
    Dim reader As StreamReader = New StreamReader("D:\TEST.TXT", System.Text.Encoding.Default)
    If reader.Peek() <> -1 Then
        Text1.Text = reader.ReadToEnd
    End If
    reader.Close()
    reader = Nothing
End Sub

Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click
    '-- ファイルを書き込む(1行ずつ書き込む場合は WriteLine を使います。)
    Dim writer As StreamWriter = New StreamWriter("D:\TEST.TXT", False, System.Text.Encoding.Default)
    writer.Write(Text1.Text)
    writer.Close()
    writer = Nothing
End Sub   

こんな感じでいかがでしょうか?

今回は特に問題なく、すんなりでしたね。

ファイルの入出力について、FileSystemクラスを使用した従来通りの方法とFileクラスを使用した方法を3回にわけてとりあげてきました。
前者が単にテキストファイルやバイナリファイルを開くというものであるのに対し、後者はそれに加え、エンコードやデコード等(その他)面倒な処理がちょっとしたコードで実現できます。
用途にわけてこれらを上手に使い分けるとよいでしょう。

ファイルの読み書きはこれぐらいにして、次回からはデータベース編に入ります。いよいよADO.NETが登場します。
 

今日の収穫
クラス等のオブジェクトのインスタンス自動作成は従来通り宣言時に New キーワードをつけて行うが、
記述方法は通常のデータ型の定義方法と同じような文法で、
Dim A As {クラス名} = New {クラス名} となる。


 

Copyright©Sugi. All rights reserved.