
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
No.2ベストアンサー
- 回答日時:
ファイルは、一本の長い原稿用紙と考えてください。
できることは
・1マス書き直す
・後に追加する
・途中または最初から後を全部消す
くらいです。「途中を削除して詰める」ことは(テキストエディタで1行削除するような感覚では)できません。
やるなら
・削除した分を詰めるように1文字ずつ書き直していって、余った最後部を切り捨てる
・一旦別の場所(ファイルやメモリ)に読み込んで削除処理したあと、全部上書きする
等工夫が必要です。
ReadLines等は、ファイルの内容をメモリにコピーするためのものです。
メモリにコピーされたものを編集しても、元のファイルにはまったく影響はありません。
このプログラムだと、読むだけでファイル書いてないので、たとえ目的の動作をしたとしても、ファイル自体は書き変わらない、ということになります。
このプログラムは、条件にあった行を(少し加工して) ArrayListの変数 resultに追加しています。
最終的に、result.Countでいくつ格納できたか表示されています。
これを応用すれば、「目的の行だけ resultに収納する」ことができます。
それを元のファイルに書き戻せば目的達成です。
その前に、別ファイルに書き出せば、元のファイルを壊さずに、動作の確認できます。
kmee 様
回答ありがとうございます。
txtファイルを2個作って1個目を全てのデータを格納し
2個目のファイルに重複無しのデータを格納する用にPGを作ることにしました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VB6側からテキストファイルをクリアにする方法
Visual Basic(VBA)
-
テキストボックスの中身をリセット(クリア)したい
Visual Basic(VBA)
-
テキストファイルクリア .net2005 VB
Visual Basic(VBA)
-
-
4
テキストファイルの特定行の削除方法
Visual Basic(VBA)
-
5
VBA:Openステートメントで開いたCSVファイルの特定行を削除する方法
その他(プログラミング・Web制作)
-
6
テキストファイルの最終行を消すには。
Visual Basic(VBA)
-
7
VB.NETでのイベントの途中終了
Visual Basic(VBA)
-
8
VBAでCSVファイルが使用中かどうかの確認
Visual Basic(VBA)
-
9
vbaで指定したセルより下の行を指定する方法について vbaの質問です。 例えば、「C6」セルより下
Excel(エクセル)
-
10
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
11
Changeイベントでの複数セルのクリアの処理について
Visual Basic(VBA)
-
12
バックグラウンドのプロセスのエクセルを閉じる方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
拡張子が「cda」のファイルを聞...
-
amifldrv64.sysについて教えて...
-
特定のエクセルファイルを起動...
-
マルチスレッドでCSocket::Crea...
-
FL StudioでMIDIファイル書き出...
-
ホームページ作成中に溜まる不...
-
tmpファイル なぜできる?削除...
-
HTMLとデータベースの連携
-
PowerShellでフォルダを削除で...
-
フォルダーの削除ができません
-
ファイルの先頭に追加書込みす...
-
メールで送られてきたワードの...
-
excelを共有ファイルにすると行...
-
仕事のファイルを共有フォルダ...
-
エクセルVBAでフォルダ内の全フ...
-
テキスト内容の削除方法
-
質問です。 sdカード内に、デー...
-
【Excel】[Expression.Error] ...
-
2つのファイルを比較して判定を...
-
CDをISO化して焼く方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel】[Expression.Error] ...
-
特定のエクセルファイルを起動...
-
Batch: フォルダ内の特定のファ...
-
共有フォルダに誰が何にアクセ...
-
excelを共有ファイルにすると行...
-
社内Excel共有ブックでの保存ト...
-
AccessVBAで作成したExcelファ...
-
事務の派遣で働いています。多...
-
VBAでCSVファイルが使用中かど...
-
拡張子が「cda」のファイルを聞...
-
Access VBA を利用して、フォル...
-
(Excelマクロ)datファイルをエ...
-
【VBA】異なる行だけを抜き出す...
-
【アクセス】「ほかのユーザー...
-
Excel VBA 処理後データが重た...
-
相手のPCにVBAからメッセ...
-
access関数を説明できる方いま...
-
XMLデータを変換し印刷する方法
-
WEBクエリが使えない場合のHPデ...
-
メールで送られてきたワードの...
おすすめ情報
お返事ありがとうございます。
データの保存、読み込みPGは完成しています。
削除方法は
①ファイルを読み込んで削除する方法。
②ファイルを保存時にすでに登録されている同じデータを削除し保存したいです。
VBをはじめて一ヶ月の初心者です。
もし良ければコードを教えてもらえればありがたいです。
よろしくお願いします。