- 日時: 2013/02/19 23:13
- 名前: VBレスキュー(花ちゃん)
- ***********************************************************************************
* カテゴリー:[テキストボックス][ファイル入出力][] * * キーワード:TextBox,テキストファイルを読み込み,読込,Text ファイル,txt ファイル * *********************************************************************************** '---------------------------------------------------------------------------------- SampleNo:028 投 稿 日:2013/02/19 投 稿 者:VBレスキュー(花ちゃん) 動作確認:Windows Vista / Windows 7 / VB2010 Pro SP1Rel / Framework 4.0 SP1Rel で [Option Compare Text][Option Explicit On][Option Infer On][Option Strict On]で確認 '========1=========2=========3=========4=========5=========6=========7=========8===
1.テキストファイルを丸ごと読み込みテキストボックスに表示。 2.テキストファイルを1行づつ読み込みテキストボックスに表示。
テキストファイルは、各自ご用意ください。 どちらの方法でも1Mバイトのファイルを読み込みテキストボックスに表示した場合 0.5 秒以下で読み込み表示できます。
'----------------------------------------------------------------------------------
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click 'テキストファイルを丸ごと読み込みテキストボックスに表示 TextBox1.Clear() Dim filePath As String = "..\..\..\data\test.txt" Try 'テキストファイルを現在のエンコード(シフトJIS)で開く Using sr As New System.IO.StreamReader(filePath, System.Text.Encoding.Default) 'テキストボックスに読込み表示 TextBox1.Text = sr.ReadToEnd End Using Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub
Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click 'テキストファイルを1行づつ読み込む TextBox1.Clear() Dim filePath As String = "..\..\..\data\test.txt" Try Using sr As New System.IO.StreamReader(filePath, System.Text.Encoding.Default) '補足1. 参照 Dim sb As New System.Text.StringBuilder(CInt(New System.IO.FileInfo(filePath).Length)) 'ファイルの最後までループ Do Until sr.Peek = -1 '1行づつ読込み連結(文字列の連結が高速に処理される) '加工が必要な行等がある場合は、ここで処理する sb.Append(sr.ReadLine & vbCrLf) Loop '読込んだデータをテキストボックスに表示 TextBox1.Text = sb.ToString() End Using Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub
'---------------------------------------------------------------------------------- 補足1. 読込むテキストファイルのバッファを確保、サイズ 0 でも問題ないが、ある程度サイズが 予測できる場合は、指定しておく、詳しくは、MSDN 参照。 ここでは、読み込むファイルのサイズを指定することにします。 本来は、ファイルサイズではなく、ファイルの文字数を指定するべきですが、読み込む前に ファイルの文字列長が解らないので、それに近いサイズは、ファイルサイズで得られるので 代用しております。
今回テストしてみると 使用したファイルサイズ=2710 バイト TextBox1.Text.Length = 1458 StreamReader(2710) の時の Debug.Print(sb.Capacity.ToString) 結果 = 2710 StreamReader() の時のDebug.Print(sb.Capacity.ToString) 結果 = 2336 StreamReader(1458) の時のDebug.Print(sb.Capacity.ToString) 結果 = 1458 StreamReader(1000) の時のDebug.Print(sb.Capacity.ToString) 結果 = 2000 このように、足りなくなればSystem.Text.StringBuilderは自動で拡張しますので問題は おきませんが、その分効率は悪くなるといえます。 従って、少し位メモリが無駄になっても、少し多めにとっておいた方がよいかと。
|