我有一个管道分隔文件,它有多个不同的扁平数据线。
我想根据数据中的第一个字段进行拆分,以便最终得到两个数据文件(一个包含我选择的数据,另一个包含剩余数据)
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
答案 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