vb.net:如何根据我在代码中设置的标志将带分隔符的文件拆分为单独的文件

vb.net:如何根据我在代码中设置的标志将带分隔符的文件拆分为单独的文件,vb.net,split,Vb.net,Split,我有一个管道分隔的文件,它有多个不同的平面数据行 我希望根据数据中的第一个字段进行拆分,以便最终得到两个数据文件(一个包含我选择的数据,另一个包含剩余数据) e、 g 标记|随机数据|随机数据|随机数据|随机数据|随机数据|随机数据| FLAG1 |随机数据|随机数据|随机数据|随机数据|随机数据|随机数据| FLAG2 |随机数据|随机数据|随机数据|随机数据|随机数据|随机数据| FLAG1 |随机数据|随机数据|随机数据|随机数据|随机数据| 因此,所有带有FLAG1的数据都将保存在一个文

我有一个管道分隔的文件,它有多个不同的平面数据行

我希望根据数据中的第一个字段进行拆分,以便最终得到两个数据文件(一个包含我选择的数据,另一个包含剩余数据)

e、 g

标记|随机数据|随机数据|随机数据|随机数据|随机数据|随机数据| FLAG1 |随机数据|随机数据|随机数据|随机数据|随机数据|随机数据| FLAG2 |随机数据|随机数据|随机数据|随机数据|随机数据|随机数据| FLAG1 |随机数据|随机数据|随机数据|随机数据|随机数据|

因此,所有带有FLAG1的数据都将保存在一个文件中,而其余的(FLAG2)将保存在一个单独的文件中

到目前为止,我有:

Imports System
Imports System.IO

Public Class Form1

    Dim c As Integer

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim Tr As IO.TextReader = System.IO.File.OpenText("C:\Users\gmck\Desktop\TIG DATA\test_1")
        For c As Integer = 0 To 1500

        Next

        If c = 0 Then
            Dim MyFileLine As String = Split(Tr.ReadToEnd(), vbCrLf)(c) & vbCrLf
            Tr.Close()

            Dim TW As System.IO.TextWriter
            'Create a Text file and load it into the TextWriter 
            TW = System.IO.File.CreateText("C:\Users\gmck\Desktop\TIG DATA\test_NEW")
            TW.WriteLine(MyFileLine)
            'Flush the text to the file 
            TW.Flush()
            'Close the File 
            TW.Close()
        End If
    End Sub
End Class
取出第一条记录并将其放入新文件。我想不出如何让它拿出一个特定标志的所有记录

为任何帮助干杯


Gaz

尝试以下操作:首先,它读取
vbcrlf
上的文件拆分,以获取文件中的所有行

然后它遍历行集合,检查它们是以“FLAG1”还是以“FLAG2”开头。根据这种情况,它会写入第一个或第二个文件

Private Sub Read()
    Dim Tr As IO.TextReader = System.IO.File.OpenText("f:\input.txt")

    Dim rows As String() = Tr.ReadToEnd().Split(vbCrLf)
    Tr.Close()

    Dim TW1 As System.IO.TextWriter
    TW1 = System.IO.File.CreateText("f:\output_1.txt")

    Dim TW2 As System.IO.TextWriter
    TW2 = System.IO.File.CreateText("f:\output_2.txt")

    For Each row As String In rows
        row = row.Trim
        If row.StartsWith("FLAG1") Then
            TW1.WriteLine(row)
        End If

        If row.StartsWith("FLAG2") Then
            TW2.WriteLine(row)
        End If
    Next

    TW1.Flush()
    TW1.Close()

    TW2.Flush()
    TW2.Close()
End Sub

没有新线?输入文件有多大?输入文件可以是高达15000行(大约4mb大小)的任何内容,您自己有没有尝试过解决这个问题?如果是这样的话,请举一些你尝试过但没有成功的例子。我没有,我认为这对我来说太过分了:(到目前为止,我所做的只是打开文件对话框来获取文件:(我在这里找到了一些代码,虽然有点帮助,但并没有完全达到我想要的效果,所以我将其上传到了原始帖子中。一条评论:使用语句。它们是你的朋友。这非常完美,谢谢:)它现在输出一个标志,我已经将剩余的数据输出到第二个文件:)修改代码会有多困难?如果我搜索一个特定的十六进制位置,它会用我在“FLAG1”或“FLAG2”位置输入的数字替换它?它会从textreader更改为ByterReader或类似的东西吗?