如何使用vb写入文本文件中的特定行

时间:2011-03-28 22:59:48

标签: function vb6 text-files

我有一个包含此示例数据的文本文件

  

绑架测试| 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 个答案:

答案 0 :(得分:3)

我会说:

  • 逐行阅读
  • 检查该行是否包含要删除的成员
  • 如果行不是
  • ,则将该行写回新文件
  • 阅读完所有行后删除原始文件
  • 将新文件重命名为原始文件

Stefan的方法可能更快,但如果文件变得非常大,将使用大量内存。

我不熟悉VB的原生文件方法。使用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帮助的情况下编写,因此代码中可能会出现一些拼写错误。