質問をさせてください。
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
普通は、『例えば』
1.StreamReader(元のファイル)、StreamWriter(こちらは別名のファイル)を定義
2.StreamReaderで1行読む
3.読んだ行が書き換えたい行ならテキストボックスの内容をStreamWriter.WriteLine
書き換えたい行でなければStreamReaderで読んだ行の内容をWriteLine
4. 2〜3を終わりまで繰り返す
5.StreamReader,StreamWriterをClose,Dispose
6.元々のファイルを削除、StreamWriterで書いたファイルを元のファイル名にRename
…とかになると思う
細かい事を言えば、全ての行を読んで配列に入れてから内容の差し替えを配列内で行って、
その後 元のファイルに一気に上書き、とかも考えられるとは思うが
提示されているソースでは、そもそも「何行目を差し替えようとしているか」が
表現されていない
それでは考え方的に足りないので、そこを どう盛り込むかを考えるべき
(もちろん、差し替える行以外は元のままにする(元と同じに見えるようにする)
事も念頭に入れて)
ちなみに、本当に「該当行だけを書き換える」ようにするには、
相当の困難が伴うと思うので、やめておいた方がいい
ツイート | ![]() |