どうも!リョクちゃです。
今回は、テキストファイルを作成する方法を
テキストボックスに打ち込んだ文字を書き込む例とともに紹介していきます。
前回はテキストファイルを読み込んでコンボボックスに格納するやり方を紹介しました。
目次
準備編:フォームを作成
最初に準備として、下のようなフォームを作成します。
ちなみに筆者の環境は、
- VisualStudio2019
- Windows 10 64bit
- .Net Framework 4.5.2
です。
テキストファイルを作成する準備をする
それでは、ボタンを押したらテキストボックスに打ち込んだ文字を
書き込んでいくプログラムを作成していきます。
テキストファイルを作成するには、
を使います。
コードは下のようになります。
1 2 3 4 5 |
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' テキストファイルを作成する準備 Dim sw As System.IO.StreamWriter = Nothing End Class |
作成するテキストファイルの準備をする
テキストファイルを作成する前に、準備をしていきます。
まず、必要となるのが
- ファイルを作成する場所(Path)
- 作成するファイルの文字コード
これらを変数に代入しておきます。
コードは下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' テキストファイルを作成する準備 Dim sw As System.IO.StreamWriter = Nothing ' 作成するファイル名を設定 Dim writeFilePath As String = "./Test.txt" ' 文字コードを設定 Dim utf_8 As System.Text.Encoding = System.Text.Encoding.UTF8 End Sub End Class |
ここでは、ファイルの作成場所をDebugフォルダの直下に作成するよう設定しています。
また、文字コードはUTF-8を設定しています。
インスタンスを作成
このままでは使うことができないので、インスタンスを作成します。
コードは下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' テキストファイルを作成する準備 Dim sw As System.IO.StreamWriter = Nothing ' 作成するファイル名を設定 Dim writeFilePath As String = "./Test.txt" ' 文字コードを設定 Dim utf_8 As System.Text.Encoding = System.Text.Encoding.UTF8 ' インスタンスを作成 ' 第1引数に作成するファイル名(パス含む) ' 第2引数に上書きするかしないか(True or False) ' 第3引数に文字コード sw = New System.IO.StreamWriter(writeFilePath, True, utf_8) End Sub End Class |
インスタンスを作成するとともに、先ほど作成した、
ファイルの作成場所と文字コード、それに加えて
ファイルを上書きするかしないかをTrue or Falseで選択します。
Trueだと、追記モードになり、既にあるファイルに値を追記していきます。
Falseだと、上書きモードになり、追記は行いません。
今回は、Trueにしています。
※ ファイルがない場合は、新たにファイルを作成します。
文字を書き込んでいく
インスタンスが作成出来たら、テキストボックスに打ち込んだ文字を
書き込みます。
コードは下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' テキストファイルを作成する準備 Dim sw As System.IO.StreamWriter = Nothing ' 作成するファイル名を設定 Dim writeFilePath As String = "./Test.txt" ' 文字コードを設定 Dim utf_8 As System.Text.Encoding = System.Text.Encoding.UTF8 ' インスタンスを作成 ' 第1引数に作成するファイル名(パス含む) ' 第2引数に上書きするかしないか(True or False) ' 第3引数に文字コード sw = New System.IO.StreamWriter(writeFilePath, True, utf_8) ' テキストボックスの文字列を書き込む sw.Write(Me.txtTest.Text) End Sub End Class |
sw.Write(“書き込む文字列”)と書くことで、ファイルに文字を書き込むことができます。
このままでは×、最後にオブジェクトの開放をする
このままでも文字を書き込めるのですが、
ファイルに対して正常に終了したことを教えてあげないといけません、
これをオブジェクトの開放と筆者は言っています。
解放を行わないと次にファイルに書き込む際にエラーが起きてしまう可能性があります。
オブジェクトの開放は、下のようなコードになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' テキストファイルを作成する準備 Dim sw As System.IO.StreamWriter = Nothing ' 作成するファイル名を設定 Dim writeFilePath As String = "./Test.txt" ' 文字コードを設定 Dim utf_8 As System.Text.Encoding = System.Text.Encoding.UTF8 ' インスタンスを作成 ' 第1引数に作成するファイル名(パス含む) ' 第2引数に上書きするかしないか(True or False) ' 第3引数に文字コード sw = New System.IO.StreamWriter(writeFilePath, True, utf_8) ' テキストボックスの文字列を書き込む sw.Write(Me.txtTest.Text) ' オブジェクトの開放を行う If sw IsNot Nothing Then sw.Close() sw.Dispose() sw = Nothing End If End Sub End Class |
If文の条件式には、変数swがNothingでなければ処理を行うといった条件になっています。
条件下の処理では、
- 変数swのClose処理を行う。(まず、変数の使用終了を伝える。)
- 変数swのDispose処理を行う。アンマネージリソースと呼ばれるリソースの解放をしています。本来自動的にされるのですが、外部ファイルなどに関しては例外でコードを書く者(コーダー)に委ねられます。
- 変数swの中身を空にする。
といった処理を行っています。
アンマネージリソースには、データベースへの接続やExcelなども該当します。
ここについては忘れずに行うよう意識しましょう。
コードを実行する
一通りのコードが書けたので、コードを実行し、
テキストボックスに書き込む文字を入力しボタンを押してみましょう。
下に実行例を示しておきます。
テキストボックスに打ち込んだ”こんにちは”が
ここではテキストファイルとして作成されます。
それではファイルが作成されているか確認しましょう。
Debugフォルダの直下に成功されていれば成功です。
下のような状態になります。
これでテキストファイルを作成することができました。
追記モードにしているので、追加でテキストボックスに入力した文字も
先ほど追加した文字の末尾に書き込まれていきます。
下に実行例を示します。
まとめ
append As Boolean,
encoding As Encoding)
インスタンスを作成する際に、
- ファイルの場所の設定 : Path
- 文字コードの設定 : encoding
- 上書き(False) or 追記(True)の設定 : append
が必要になります。
最後にファイルのオブジェクト解放を忘れずに。
- .Close()処理
- .Dispose()処理
- 変数 = Nothing
ご覧いただきありがとうございます。
・こちらの書籍を参考にVB.Net勉強しています。