テキストファイルのある行の文字だけ上書きしたい


ホワイトミミィ  2008-07-23 17:48:28  No: 140117

質問をさせてください。
Text.txtには3行文字が入っているとします。
(例)
1.あああ
2.いいい
3.ううう

フォーム上にあるテキストボックスに、たとえば "4.えええ" と文字を入力し、Writeボタンを押すと3行目の "3.ううう" のところだけ "4.えええ"と上書きができるようなプログラムを作成しています。
まだ途中の段階ですが以下のようなプログラムを作成していますが、現時点では全部を上書きされてしまいます。
どのようにすれば私の必要とするプログラムになるかご教授いただければ幸いです。
よろしくお願いします。

    Private Sub btnWrite_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnWrite.Click
        Dim FilePath As String = "C:\Test.txt"
        Dim objStreamWriter As StreamWriter
        Dim strData As String
        Dim Ex As Exception

        With txtVisitorName
            Try
                objStreamWriter = New StreamWriter(FilePath, False, System.Text.Encoding.Default)
                With objStreamWriter
                    For Each strData In Split(txtVisitorName.Text, vbNewLine)
                        .WriteLine(strData)
                        .Flush()
                    Next
                End With
                objStreamWriter.Close()
            Catch Ex
            End Try
        End With
    End Sub


  2008-07-23 19:08:33  No: 140118

普通は、『例えば』
1.StreamReader(元のファイル)、StreamWriter(こちらは別名のファイル)を定義
2.StreamReaderで1行読む
3.読んだ行が書き換えたい行ならテキストボックスの内容をStreamWriter.WriteLine
  書き換えたい行でなければStreamReaderで読んだ行の内容をWriteLine
4. 2〜3を終わりまで繰り返す
5.StreamReader,StreamWriterをClose,Dispose
6.元々のファイルを削除、StreamWriterで書いたファイルを元のファイル名にRename
…とかになると思う
細かい事を言えば、全ての行を読んで配列に入れてから内容の差し替えを配列内で行って、
その後 元のファイルに一気に上書き、とかも考えられるとは思うが

提示されているソースでは、そもそも「何行目を差し替えようとしているか」が
表現されていない
それでは考え方的に足りないので、そこを どう盛り込むかを考えるべき
(もちろん、差し替える行以外は元のままにする(元と同じに見えるようにする)
  事も念頭に入れて)
ちなみに、本当に「該当行だけを書き換える」ようにするには、
相当の困難が伴うと思うので、やめておいた方がいい


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

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






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