VB.NETのファイル操作を完全ガイド!初心者でもわかる読み書きの基本
生徒
「VB.NETでメモ帳のようなテキストファイルに文字を保存したり、読み込んだりする方法はありますか?」
先生
「もちろんです。VB.NETでは、StreamReader(ストリームリーダー)とStreamWriter(ストリームライター)という道具を使って、簡単にファイルの読み書きができますよ。」
生徒
「ストリーム…?なんだか難しそうな名前ですね。パソコンに詳しくない私でも使いこなせるでしょうか?」
先生
「ストリームは『データの流れ』という意味です。ストローでお茶を飲むように、データを少しずつ運ぶイメージですね。具体的な使い方を丁寧に解説していきます!」
1. ファイル操作の基本「ストリーム」とは?
VB.NET(ヴィジュアルベーシック・ドットネット)でファイルを扱うときに必ず出てくる言葉が「ストリーム(Stream)」です。これは、パソコンのハードディスクやメモリーの間で、データが流れる通路のようなものを指します。
プログラミング未経験の方には、「水道のホース」を想像してもらうと分かりやすいでしょう。蛇口(ファイル)をひねると、水(データ)がホース(ストリーム)を通ってバケツ(プログラム)に溜まります。このホースの役割を担うのが、今回学習する StreamWriter(書き込み用) と StreamReader(読み込み用) なのです。これらをマスターすることで、日記アプリや家計簿アプリなど、データを保存する便利なソフトウェアを作ることができるようになります。
2. StreamWriterでファイルに文字を書き込む
まずは、プログラムで作った文章をテキストファイルとして保存する方法を学びましょう。ここで使うのが StreamWriter(ストリームライター) です。「ライター」という名前の通り、筆記用具のような役割を果たします。
ファイルに書き込むときは、まず「どのファイルに書くか」を決め、次に「内容を書く」、最後に「筆記用具を片付ける(閉じる)」という手順を踏みます。この「片付ける」作業を忘れると、ファイルが壊れたり、他のソフトで開けなくなったりするので注意しましょう。VB.NETでは Using という命令を使うと、自動で片付けをしてくれるので非常に安全です。
' 保存する場所とファイル名を決めます
Dim filePath As String = "C:\temp\sample.txt"
' Usingを使うと、書き込みが終わった後に自動でファイルを閉じてくれます
Using writer As New System.IO.StreamWriter(filePath, False, System.Text.Encoding.UTF8)
writer.WriteLine("こんにちは!VB.NETの世界へようこそ。")
writer.WriteLine("これはStreamWriterで書き込んだ文章です。")
writer.WriteLine("今日の日付は " & DateTime.Now.ToString() & " です。")
End Using
Console.WriteLine("ファイルの書き込みが完了しました。")
このコードを実行すると、指定した場所にテキストファイルが作成され、中に文章が書き込まれます。False と書いてある部分は「上書き」を意味します。ここを True に変えると、元の内容を残したまま後ろに追記することができます。
3. StreamReaderでファイルの内容を読み込む
次に、保存されているファイルの中身をプログラムで読み取ってみましょう。ここで使うのが StreamReader(ストリームリーダー) です。「リーダー」は読書家のような役割で、ファイルの中身を一行ずつ、あるいは全部まとめて読み取ってくれます。
読み込む際も書き込みと同様に、最後には必ず「本を閉じる(ファイルを閉じる)」必要があります。ここでも Using を活用するのがベストな書き方です。読み取った内容は、プログラム内の変数に保存して、画面に表示したり計算に使ったりすることができます。
Dim targetPath As String = "C:\temp\sample.txt"
' ファイルが存在するか確認してから読み込みます
If System.IO.File.Exists(targetPath) Then
Using reader As New System.IO.StreamReader(targetPath, System.Text.Encoding.UTF8)
' ファイルの内容を最後まで一気に読み込みます
Dim content As String = reader.ReadToEnd()
Console.WriteLine("--- ファイルの中身を表示します ---")
Console.WriteLine(content)
End Using
Else
Console.WriteLine("ファイルが見つかりませんでした。")
End If
実行結果は以下のようになります。
--- ファイルの中身を表示します ---
こんにちは!VB.NETの世界へようこそ。
これはStreamWriterで書き込んだ文章です。
今日の日付は 2026/02/06 14:35:46 です。
4. 一行ずつ読み込んで処理する方法
大きなファイルの場合、一気に全部読み込むとパソコンのメモリが足りなくなってしまうことがあります。そんなときは、一行ずつ順番に読み込む方法が効果的です。ReadLine(リードライン) という命令を使い、ループ処理(繰り返し)と組み合わせることで、一行ごとに内容をチェックしながら読み進めることができます。
例えば、大量の名簿データの中から、特定の名前の人だけを探したいときなどにこの方法を使います。パソコン初心者の方には、「本をペラペラめくりながら、一行ずつ指で追って読んでいく」イメージを持ってもらうと分かりやすいでしょう。
Dim listPath As String = "C:\temp\sample.txt"
Using reader As New System.IO.StreamReader(listPath)
' ファイルの最後まで繰り返し読み込みます
While reader.Peek() >= 0
Dim line As String = reader.ReadLine()
' もし読み込んだ行に「VB.NET」という文字が含まれていたら表示します
If line.Contains("VB.NET") Then
Console.WriteLine("発見しました: " & line)
End If
End While
End Using
reader.Peek() は、「次に読み込む文字があるかな?」と覗き見する命令です。文字がある間はずっと読み続けるという仕組みになっています。これにより、どんなに長い文章でも、一行ずつ着実に処理することが可能になります。
5. エンコーディング(文字コード)に注意しよう
ファイル操作でよくある失敗が「文字化け」です。文字化けとは、保存したときと読み取ったときの「文字の翻訳ルール」が食い違って、意味不明な記号が表示されてしまう現象です。この翻訳ルールのことをエンコーディング(文字コード)と呼びます。
現代の標準は UTF-8(ユーティーエフエイト) です。VB.NETでファイルを開くときは、書き込み時も読み込み時も同じ System.Text.Encoding.UTF8 を指定するようにしましょう。特に昔の日本のパソコンで使われていた「Shift-JIS(シフトジス)」のファイルを扱うときは注意が必要です。ルールを統一することが、ファイル操作を成功させる最大の秘訣です。
6. ファイルが見つからないエラーを防ぐ
プログラムがファイルを読みに行こうとしたとき、そこにファイルがなかったらパソコンはパニックを起こして停止してしまいます。これを 例外(エラー) と呼びます。未経験の方が書くプログラムで最も多い失敗の一つです。
これを防ぐためには、いきなりファイルを読もうとせず、まず System.IO.File.Exists という命令を使って、「そこにファイルはありますか?」と確認してから作業を始めるのが、プログラミングの「ベストプラクティス(一番良いやり方)」です。事前に確認する癖をつけることで、止まらない安定したアプリを作ることができます。
Dim myFile As String = "C:\temp\data.txt"
' ファイルがあるかどうか、事前に「もしも」で確認します
If System.IO.File.Exists(myFile) Then
' ここで初めてファイルを読み込む処理を書きます
Console.WriteLine("ファイルが見つかったので、読み込みを開始します。")
Else
' ファイルがない場合の処理を書きます
Console.WriteLine("エラー:ファイルが指定の場所に見当たりません。")
End If
7. フォルダ(ディレクトリ)の作成も忘れずに
ファイルを保存しようとしたとき、そのファイルを置くための「フォルダ」自体が存在しない場合もエラーになってしまいます。ファイルを書き込む前には、保存先のフォルダがちゃんとあるかどうかも確認しましょう。もしなければ、System.IO.Directory.CreateDirectory という命令でフォルダを自動作成することもできます。
パソコンの操作に慣れていない方は、まず「Cドライブ」の中に「temp」という名前のフォルダを手作業で作っておくのが一番簡単でおすすめです。プログラムからフォルダを操作できるようになると、日付ごとに自動でフォルダを分けてファイルを整理するといった高度なこともできるようになります。
8. ファイル操作をマスターしてアプリを作ろう
VB.NETでのファイル読み書きは、StreamReaderとStreamWriterという二つの主役を覚えることから始まります。最初は難しく感じるかもしれませんが、「開く」「書く/読む」「閉じる」という三拍子の流れを繰り返すだけです。この技術を習得すれば、ユーザーが入力した大切なデータを長期間保存しておくことができるようになり、本物のアプリケーション開発へと大きく前進します。
まずは、簡単な日記帳プログラムから作ってみてはいかがでしょうか。自分の書いた文字がファイルとして保存され、再び読み込めたときの感動は、プログラミング学習の大きなモチベーションになります。今回の基本をしっかり守って、ぜひ色々なファイル操作に挑戦してみてくださいね!