Как написать в определенную строку в текстовом файле с помощью VB - PullRequest
1 голос
/ 29 марта 2011

У меня есть текстовый файл с этими примерами данных

тест на похищение | 1
тест на чипы | 2
тест на шляпника | 3
тест на зло | 4

Я хотел бы знать, как я мог бы пройтись по нему, чтобы найти пользователя и удалить эту строку.

Это то, что у меня есть:

Public Sub RemoveMember(member As String)
Dim u As String, strdata() As String

Open (App.Path & "\Membership.txt") For input As #1
    Do

    input #1, u

    strdata = Split(u, "|")

    If strdata(0) = member Then
        'figure out a way to remove this line from the text file'
    End If

    Loop Until EOF(1)

Close #1
End Sub

1 Ответ

3 голосов
/ 29 марта 2011

Я бы сказал:

  • Читайте в строках по очереди
  • Проверьте, содержит ли строка удаляемый элемент
  • Запишите строку в новый файл, если он не
  • После прочтения всех строк удалите оригинальный файл
  • Переименование нового файла в исходный файл

Метод Стефана, вероятно, быстрее, но будет использовать много памяти, если файл станет очень большим.

Я не знаком с внутренним файловым методом В.Б. Используя FileSystemObject (ссылка на Microsoft Scripting Host), вы получите:

Dim clsOriginalFile as TextStream
Dim clsNewFile as TextStream
Dim FSO as New FileSystemObject
Dim varLine as Variant
Dim strLine as String

set clsOriginalFile=FSO.OpenTextFile "members.txt", ForReading
set clsNewFile =FSO.OpentTextFile "temp.txt", ForWriting, True

Do While Not clsOriginalFile.AtEndOfStream
    varLine = clsOriginalFile.ReadLine
    strLine=varLine
    If instr(strLine,member)=0 Then
        clsNewFile.WriteLine strLine
    End If
Loop

clsOriginalFile.Close
clsNewFile.Close

FSO.DeleteFile("members.txt")
FSO.MoveFile("temp.txt","members.txt")

Написано без помощи IDE, поэтому в коде может быть несколько опечаток.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...