アプリ版:「スタンプのみでお礼する」機能のリリースについて

VB2010を使っています。初心者です
テキストファイルに複数のフルパスデータ「test.txt」があります。

test.txtから2バイト文字を検索し該当するデータを削除したいです。

例:C:\あああ フォルダを含むデータを全てテキストファイルから削除したいです。

本で探したりネット検索しましたが私の探し方が
悪いせいか目的のコードを探せませんでした。

下記のPGは何件ヒットしたかのPGです。
このPGを改良してデータの削除はできませんか?(fffの変数に入っているデータを削除したい)
それとも、他の方法があるのでしょうか?

よろしくお願いします。
--------------------------------------------------------------------------------------------

Private Sub Button8_Click(sender As System.Object, e As System.EventArgs) Handles Button8.Click

'読み込む文字コードの指定(ここでは、Shift JIS)
Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("shift_jis")

'検索の結果を格納
Dim result As New ArrayList

'今回検索する文字列を格納
Dim seach_str As String = TextBox1.Text

For Each txtFileName As String In IO.Directory.GetFiles("D:\test")
'C:\testフォルダ以下にある複数のファイルの列挙

If IO.Path.GetExtension(txtFileName).ToLower = ".txt" Then
'textファイルのみ抽出する。

'すべての行を読み込む
For Each fff As String In System.IO.File.ReadAllLines(txtFileName, enc)
'"aaa"の文字を検索
If fff.IndexOf(seach_str) >= 0 Then
'その後にある"xxx"を取得する。

'※最後の-1は、"aaa"直後の文字を含めない場合は削除する
'fff = fff.Substring(fff.Length - fff.IndexOf(seach_str) - seach_str.Length - 1)
'結果に格納
result.Add(fff)
End If
Next
End If
Next
MessageBox.Show(result.Count.ToString & "個ヒットしました。")

End Sub

質問者からの補足コメント

  • お返事ありがとうございます。

    データの保存、読み込みPGは完成しています。

    削除方法は
    ①ファイルを読み込んで削除する方法。
    ②ファイルを保存時にすでに登録されている同じデータを削除し保存したいです。

    VBをはじめて一ヶ月の初心者です。
    もし良ければコードを教えてもらえればありがたいです。

    よろしくお願いします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2019/05/13 19:59

A 回答 (2件)

ファイルは、一本の長い原稿用紙と考えてください。


できることは
・1マス書き直す
・後に追加する
・途中または最初から後を全部消す
くらいです。「途中を削除して詰める」ことは(テキストエディタで1行削除するような感覚では)できません。
やるなら
・削除した分を詰めるように1文字ずつ書き直していって、余った最後部を切り捨てる
・一旦別の場所(ファイルやメモリ)に読み込んで削除処理したあと、全部上書きする
等工夫が必要です。


ReadLines等は、ファイルの内容をメモリにコピーするためのものです。
メモリにコピーされたものを編集しても、元のファイルにはまったく影響はありません。
このプログラムだと、読むだけでファイル書いてないので、たとえ目的の動作をしたとしても、ファイル自体は書き変わらない、ということになります。


このプログラムは、条件にあった行を(少し加工して) ArrayListの変数 resultに追加しています。
最終的に、result.Countでいくつ格納できたか表示されています。
これを応用すれば、「目的の行だけ resultに収納する」ことができます。
それを元のファイルに書き戻せば目的達成です。
その前に、別ファイルに書き出せば、元のファイルを壊さずに、動作の確認できます。
    • good
    • 0
この回答へのお礼

kmee 様
回答ありがとうございます。

txtファイルを2個作って1個目を全てのデータを格納し
2個目のファイルに重複無しのデータを格納する用にPGを作ることにしました。

お礼日時:2019/05/14 10:42

ファイルに書き出さないのですか?

この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています