テキストファイルの読み込みができない

解決


九十九  2009-10-09 22:39:39  No: 146362

1test.txtの文を1行ずつテキストファイルに読み込みたいのですが
一行目以降が読み込めません。
結合演算子をつけると一行目の文がつながっていきます。
理由がわかりません、ご指導賜りたく思います。

Dim i As Integer = -1
   
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        TextBox1.Text = ""

        Const qfile As String = "c:\1test.txt"
        Dim str( ) As String
        Dim lines As Integer
        

        lines = File.ReadAllLines(qfile).Length
        ReDim str(lines - 1)

        Dim sr As StreamReader = New StreamReader(qfile, Encoding.Default)

        
        i += 1
        str(i) = sr.ReadLine( )

        TextBox1.Text += str(i) + vbCrLf

       

        sr.Close()

    End Sub


九十九  2009-10-09 22:41:55  No: 146363

間違い
'TextBox1.Text = ""コメントアウトです


特攻隊長まるるう  2009-10-09 23:24:36  No: 146364

テキストファイルは1行目から読み込むものですからね。

ファイルを開いて1行目を読み込んで閉じて
もう一度ファイルを開けば1行目から読みます。

ReadLine を繰り返して指定行まで読み飛ばせばいいのでは?


九十九  2009-10-10 00:10:41  No: 146365

何とかクリックするたびに一行ずつ読み込むことが
できるようになりました。
コードこれでいいのでしょうか?
できればアドバイスお願いします。

Dim n As Integer = -1

   
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        TextBox1.Text = ""

        Const qfile As String = "c:\1test.txt"
        Dim str() As String
        Dim lines As Integer
    

        lines = File.ReadAllLines(qfile).Length
        ReDim str(lines - 1)

        Dim sr As StreamReader = New StreamReader(qfile, Encoding.Default)

        n += 1
        For i As Integer = 0 To n
            If i < lines - 1 Then

                str(i) = sr.ReadLine()

                TextBox1.Text += str(i) + vbCrLf
            Else
                MessageBox.Show("終了")
            End If
           
        Next

        sr.Close()

    End Sub


GOD  2009-10-10 01:17:57  No: 146366

> TextBox1.Text += str(i) + vbCrLf
>
は TextBox1.AppendText(str(i) + vbCrLf) とすれば速度が向上しますよ。


九十九  2009-10-10 21:09:57  No: 146367

有り難うございました。


九十九  2009-10-12 18:32:15  No: 146368

蒸し返すようですが  If i < lines - 1 Thenは

If i < lines  Thenの間違いですね

  n += 1
        For i As Integer = 0 To n
            If i < lines - 1 Then

                str(i) = sr.ReadLine()

                TextBox1.Text += str(i) + vbCrLf
            Else
                MessageBox.Show("終了")
            End If


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加