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

时间:2013-05-23 17:42:55

标签: vb.net split

我有一个管道分隔文件,它有多个不同的扁平数据线。

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

e.g

FLAG |随机数据|随机数据|随机数据|随机数据|随机数据|随机数据| FLAG1 |随机数据|随机数据|随机数据|随机数据|随机数据|随机数据| FLAG2 |随机数据|随机数据|随机数据|随机数据|随机数据|随机数据| FLAG1 | random data | random data | random data | random data | random data | random data |

所以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

1 个答案:

答案 0 :(得分:0)

试试这个:首先,它读取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