【VB.Net】複数のテキストファイルを読み込み、1つにまとめてみる

どうも!リョクちゃです。

今回は複数のテキストファイルを読み込み、

1つのテキストファイルを作成する方法を紹介していきます。

ここでは、以下の点について学びながら最終的ゴールである、

1つのファイルを作り上げていきます。

  • 複数のファイルを読み込む方法
  • 複数のファイルの内容を書き込む
  • 1つのファイルを作成(これについてはテキストファイル関連記事もご覧ください。)

ちなみに前回は、こちら

アプリケーションによっては、フォルダを作成し、そこにファイルを出力していくモノもあります。そんな時に使えるフォルダ既に作成されているのかどうかを確認し、なければ新たに作成する方法を実際にWindowsフォームを例に簡単に紹介しています。



準備編:フォームを作成

最初に準備として、下のようなフォームを作成します。

コントロールは、

  • ラベル
  • リッチテキストボックス
  • ボタン
  • テキストボックス

を使用しています。

ちなみに筆者の環境は、

  • VisualStudio2019
  • Windows 10 64bit
  • .Net Framework 4.5.2

です。

適当なフォルダを作成し、テキストファイルを作成

任意の場所にフォルダを作成し、その中にテキストファイルを3~4つ作成しましょう。

筆者は、以下のフォルダを作成し、テキストファイルを作成しました。

テキストファイルの中身はそれぞれ

sample_1.txt

sample_2.txt

sample_3.txt

sample_4.txt

を用意しました。(よければ同じのを作成してみてください。)

複数のテキストファイルを読み込む

それでは先ほど作成もしくは適当に用意したテキストファイルを読み取っていきます。

複数のファイルを読み取るには、考え方を少し変えます。

まず、1つのファイルを読み取るには、

System.IO.StreamReader

を使うということは以前の記事でも触れました。

実は今回もこれを使います……。

ただ、このままでは複数のファイルは読み取ることができません。

どうすればよいか……。

ここで考え方を整理します。

複数のファイルはもともとは一つのファイルで存在します。

つまり、フォルダ内にある一つ一つのファイルを取得し、配列やリストといった

コレクション型の変数に格納してやります。

そうすることで、あとはFor文やWhile文を回すことで
あたかも複数のファイルを読み取っているような処理が実現できます。

スポンサーリンク




複数のファイルを取得する

複数のファイルを取得するには、

System.IO.Directory.GetFiles(“フォルダの場所”)

を使います。

コードは下のようになります。

System.IO.Directory.GetFiles()は戻り値があるメソッドなので、

変数を作成し代入する書き方をしています。

変数filesの中身をフォーム上に表示してみる

それでは、変数filesの中身をリッチテキストボックスに表示していきましょう。

コードは下のようになります。

これを実行すると、

このようになりますが、ちょっと見づらいですね。

なので、ファイルの名前だけを表示してあげるように直します。

ファイルのパスからファイル名と拡張子を取得するには、

System.IO.Path.GetFileName(“ファイル名(パス含む)”)

を使用します。

コードは下のようになります。

これを実行すると、

見やすくなりました。

ファイルを読取り、内容を変数に代入

1つ1つに処理ができるようになったので、ファイルを読取り、

内容を配列やリストのコレクション型変数を作成し代入していきます。

コードは下のようになります。

読み取った内容をもとに新たにファイルを作成する

それでは読み取った内容をもとにファイルを作成します。

ファイルを作成するには、

System.IO.StreamWriter

を使います。

今回、文字コードはUTF-8にします。

コードは下のようになります。

最後にオブジェクトの解放を忘れずに。

これでファイルの作成ができます。

ファイルの作成部分に関しては、以前に記事にまとめたので

こちらもご参考いただければと思います。

テキストファイルを作成する方法を、フォーム上のボタンが押された後にテキストボックスに入力された文字を書き込むといった例を交えて紹介しています。プログラム上でファイルを作成する方法はいくつかありますが、その中でも一般的に使われているだろう方法を載せています。これをきっかけにイメージをつかんでいただけたらなと思います。

最後に作成したファイル名をテキストボックスに表示しておきましょう。

コードは下のようになります。

それではこれを実行してみましょう、下のようになれば成功です。

お疲れ様です。

今回は複数のファイルを読み取って、1つのファイルを作成する方法を紹介しました。

考え方次第で、いろいろなやり方があるので今回のはほんの一例として、

参考にしてもらえたらなと思います。

プログラムはプロセスも大事ですが、当然結果も同じぐらい大事です。

どんなプロセスであれ、結果が最終的に同じであればいいときがあります。

まとめ

フォルダ内のファイルを取得するには

System.IO.Directory.GetFiles(“フォルダ名(パス含む)”)

ファイルのパスからファイル名と拡張子を取り出すには

System.IO.Path.GetFileName(“ファイル名(パス含む)”)
最後までお読みいただき、ありがとうございます。

・こちらの書籍を参考にVB.Net勉強しています。

スポンサーリンク