0

現在、選択したメモ帳ファイルの内容を openFileDialog から FileStream に保存する際に問題が発生しています。私のコードは、FileStream コードを修正する方法がわからないため、デフォルトのファイル名を示しています。選択したメモ帳のファイル名を登録する必要があります。デフォルトでは、「messages.txt」の内容のみを読み取ります。メモ帳ファイルを自由に選択して、そこからデータを取得できるようにしたいと考えています。どんな種類の助けやアドバイスも、事前に感謝します。

ここに私のコードがあります:

    Dim Stream As New System.IO.FileStream("messages.txt", IO.FileMode.Open) 
    'i need to do something about this line above
    Dim sReader As New System.IO.StreamReader(Stream)
    Dim Index As Integer = 0

    Dim openFileDialog1 As New OpenFileDialog()
    openFileDialog1.InitialDirectory = "D:\work"
    openFileDialog1.Filter = "txt files (*.txt)|*.txt"
    openFileDialog1.FilterIndex = 2
    openFileDialog1.RestoreDirectory = True

    If openFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
        Try
            Stream = openFileDialog1.OpenFile()
            If (Stream IsNot Nothing) Then

                Do While sReader.Peek >= 0
                    ReDim Preserve eArray(Index)
                    eArray(Index) = sReader.ReadLine
                    RichTextBox3.Text = eArray(Index)
                    Index += 1
                    Delay(2)
                Loop

            End If
        Catch Ex As Exception
            MessageBox.Show(Ex.Message)
        Finally
            If (Stream IsNot Nothing) Then
                Stream.Close()
            End If
        End Try
    End If

End Sub
4

1 に答える 1

0

コードを少しだけ再配置しました。基本的に、ストリームを作成してから、ストリームのリーダーを「messages.txt」に作成していました。後で、ファイルを開くダイアログstreamのメソッドに基づいて、オブジェクトを新しいストリームに設定します。OpenFileしかし、リーダーはまだ最初に開いたストリームを指していたので、それが読み取られていました。最初のストリームを開かず、ユーザーが選択したファイルに基づいてストリームを作成した後にリーダーを作成するように、以下のコードを変更しました。

'don't create a stream hear and the reader, because you are just recreating a stream later in the code
Dim Stream As System.IO.FileStream

Dim Index As Integer = 0

Dim openFileDialog1 As New OpenFileDialog()
openFileDialog1.InitialDirectory = "D:\work"
openFileDialog1.Filter = "txt files (*.txt)|*.txt"
openFileDialog1.FilterIndex = 2
openFileDialog1.RestoreDirectory = True

If openFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
    Try
        'This line opens the file the user selected and sets the stream object
        Stream = openFileDialog1.OpenFile()
        If (Stream IsNot Nothing) Then
            'create the reader here and use the stream you got from the file open dialog
            Dim sReader As New System.IO.StreamReader(Stream)
            Do While sReader.Peek >= 0
                ReDim Preserve eArray(Index)
                eArray(Index) = sReader.ReadLine
                RichTextBox3.Text = eArray(Index)
                Index += 1
                Delay(2)
            Loop

        End If
    Catch Ex As Exception
        MessageBox.Show(Ex.Message)
    Finally
        If (Stream IsNot Nothing) Then
            Stream.Close()
        End If
    End Try
End If

End Sub
于 2013-07-10T16:00:38.050 に答える