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)