Vb.net 删除TXT文件中的行,但保留所有其他内容

Vb.net 删除TXT文件中的行,但保留所有其他内容,vb.net,visual-studio-2010,file-io,Vb.net,Visual Studio 2010,File Io,嘿,我想找出一种方法来删除文本文件中的内容,但保留周围的所有内容 这方面的一个例子是: SDfmifgn349234024jn4tnge0b04tnEFGm34tmn34t0egonkerglnk 318erg4nergpERGhmboergn4t34tmg054 fg94t34tskmsdglnEGgjr894ERG94mrg34tSDFS$45352ty GGreerkg0gm4m505556g0fdg6555fbd105f1g 假设我想删除318ERG4NERGGPERGHMMBOERG

嘿,我想找出一种方法来删除文本文件中的内容,但保留周围的所有内容

这方面的一个例子是:

SDfmifgn349234024jn4tnge0b04tnEFGm34tmn34t0egonkerglnk
318erg4nergpERGhmboergn4t34tmg054
fg94t34tskmsdglnEGgjr894ERG94mrg34tSDFS$45352ty
GGreerkg0gm4m505556g0fdg6555fbd105f1g
假设我想删除318ERG4NERGGPERGHMMBOERGN4T34TMG054,因此它将被保存为:

SDfmifgn349234024jn4tnge0b04tnEFGm34tmn34t0egonkerglnk
fg94t34tskmsdglnEGgjr894ERG94mrg34tSDFS$45352ty
GGreerkg0gm4m505556g0fdg6555fbd105f1g
但我不知道该怎么做

我尝试了下面的代码,我发现:

    Dim dir As New DirectoryInfo(defaultNetworkDrive)

            For Each file As FileInfo In dir.GetFiles()
                If file.Extension = ".txt" Then
                    Dim ioFile As New StreamReader(defaultNetworkDrive & file.Name)

                    Dim ioLine As String ' Going to hold one line at a time
                    Dim ioLines As String ' Going to hold whole file
                    ioLine = ioFile.ReadLine
                    ioLines = ioLine

                    While Not ioLine = ""
                        ioLine = ioFile.ReadLine
                        ioLines = ioLines & vbCrLf & ioLine
                    End While

                    MsgBox(ioLines) 'SHOWS all the lines in the TXT file

                    If InStr(1, ioLines, encryptedText, vbTextCompare) <> 0 Then
                        MsgBox("True")
                    Else
                        MsgBox("False")
                    End If

                    'Dim sw As StreamWriter = file.CreateText("input.txt")
                    'sw.Write(ioLines)
                    'sw.Close()

                    ioFile.Close()
                End If
            Next
Dim dir作为新DirectoryInfo(defaultNetworkDrive)
对于dir.GetFiles()中作为FileInfo的每个文件
如果file.Extension=“.txt”,则
Dim ioFile作为新的StreamReader(defaultNetworkDrive&file.Name)
将ioLine作为字符串“一次只能容纳一行”
将ioLines作为字符串“保存整个文件”
ioLine=ioFile.ReadLine
ioLine=ioLine
而不是ioLine=“”
ioLine=ioFile.ReadLine
ioLine=ioLine&vbCrLf&ioLine
结束时
MsgBox(ioLines)'显示TXT文件中的所有行
如果InStr(1,ioline,encryptedText,vbTextCompare)为0,则
MsgBox(“真实”)
其他的
MsgBox(“假”)
如果结束
'Dim sw As StreamWriter=file.CreateText(“input.txt”)
'西南写入(ioLines)
'sw.Close()
ioFile.Close()
如果结束
下一个
我确实找到了它和它的真的,但我不知道如何删除那行,然后保存它

任何帮助都会很好o)


David

你必须重写文件。使用StreamWriter创建临时文件。一次读取一行并将其写入输出文件。如果你不想写这一行,就跳过这一行。通过重命名原始文件、重命名临时文件,然后删除重命名的原始文件进行清理


如果速度太慢,请使用比文本文件更好的文件,如数据库。

您必须重写该文件。使用StreamWriter创建临时文件。一次读取一行并将其写入输出文件。如果你不想写这一行,就跳过这一行。通过重命名原始文件、重命名临时文件,然后删除重命名的原始文件进行清理


如果速度太慢,请使用比文本文件更好的文件,如数据库。

您需要在读取行的循环中检查要排除的字符串:

While Not ioLine = ""
  ioLine = ioFile.ReadLine
  If ioLine <> "318erg4nergpERGhmboergn4t34tmg054" then
    ioLines = ioLines & vbCrLf & ioLine
  End
End While
而不是ioLine=“”
ioLine=ioFile.ReadLine
如果ioLine“318ERG4NERGGPERGHMBOERGN4T34TMG054”,则
ioLine=ioLine&vbCrLf&ioLine
终点
结束时

您需要在读取行的循环中检查要排除的字符串:

While Not ioLine = ""
  ioLine = ioFile.ReadLine
  If ioLine <> "318erg4nergpERGhmboergn4t34tmg054" then
    ioLines = ioLines & vbCrLf & ioLine
  End
End While
而不是ioLine=“”
ioLine=ioFile.ReadLine
如果ioLine“318ERG4NERGGPERGHMBOERGN4T34TMG054”,则
ioLine=ioLine&vbCrLf&ioLine
终点
结束时

嗯,也许我找到了答案

您正在将所有线路连接在一起:

ioLines = ioLines & vbCrLf & ioLine
稍后您将尝试查找搜索字符串,但仅在组合行的开头

ioLines.StartsWith(encryptedText)
只有当encryptedText出现在文件的第一行时,才会找到它。 在你的例子中,相关字符串是在IOLIN字符串中间的某个地方。 所以你应该尝试使用 ioLines.Contains(加密文本) 相反

编辑:

您可以尝试执行以下操作(尽管只是一个例子,我还没有测试过)


嗯,也许我找到了答案

您正在将所有线路连接在一起:

ioLines = ioLines & vbCrLf & ioLine
稍后您将尝试查找搜索字符串,但仅在组合行的开头

ioLines.StartsWith(encryptedText)
只有当encryptedText出现在文件的第一行时,才会找到它。 在你的例子中,相关字符串是在IOLIN字符串中间的某个地方。 所以你应该尝试使用 ioLines.Contains(加密文本) 相反

编辑:

您可以尝试执行以下操作(尽管只是一个例子,我还没有测试过)

您正在检查“文件”(
ioLine
)是否以加密文本开头,而不是以行(
ioLine
)开头。我想这就是它找不到它的原因。 我不确定您是否有意这样做,但我认为将
vbCrLf
添加到
ioline
将导致每行之间出现一条空行。因此,您的文件输出将是

LINE
[empty line]
LINE
[empty line]
...
要保存没有该行的文件,需要将要保存的行写入新文件

Read line from file
If not excluded line
    write line
诸如此类的事情(显然是在我脑子里):)

您正在检查“文件”(
ioLine
)是否以加密文本开头,而不是以行(
ioLine
)开头。我想这就是它找不到它的原因。 我不确定您是否有意这样做,但我认为将
vbCrLf
添加到
ioline
将导致每行之间出现一条空行。因此,您的文件输出将是

LINE
[empty line]
LINE
[empty line]
...
要保存没有该行的文件,需要将要保存的行写入新文件

Read line from file
If not excluded line
    write line

类似这样的事情(显然是我想不出来的):)

好的,编辑完文章后,这个错误就不存在了。看来我迟到了。好吧,编辑完帖子后,这个错误就不存在了。看来我迟到了,就是这样。谢谢你,布洛格比尔德!:o) 成功了。谢谢你,布洛格比尔德!:o)