Перезапись собранных данных из txt файла?

У меня есть текстовый файл, состоящий из вертикального списка. Список содержит x-количество групп, но стандартно то, что они всегда состоят из трех объектов.

Пример следующим образом:

PANNEL A
38
2440

Объясняется как:

NAME
WIDTH
LENGTH

Список из трех элементов (хотя список может содержать количество x) идентичен:

NEW BEAM
38
2440
WOOD
22
610
ITEM A
50
1220

Теперь мне нужно создать новый текстовый файл, который написан следующим образом:

(“NEW BEAM”  is “38” x “2440”)
(“WOOD”  is “22” x “610”)
(“ITEM A”  is “50” x “1220”)

Как это сделать с помощью VB.NET?


person frank    schedule 07.01.2011    source источник


Ответы (1)


Вот как бы я это сделал:

Private Sub DoWork(ByVal inputFile As String, ByVal outputFile As String)
    '//The VB IDE confuses smart quotes with regular quotes so it gets hard to embed them in a string.
    '//Instead we'll embed them as raw characters
    Static LQ As Char = Chr(147)
    Static RQ As Char = Chr(148)

    '//Load our input file specifying that we want to read it and that we're willing to share it with other readers
    Using FSInput As New System.IO.FileStream(inputFile, IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.Read)
        '//Bind a string-based reader to the stream. If you know the character encoding of the file you might want to specify that as the second paramter
        Using SR As New System.IO.StreamReader(FSInput, True)
            '//Create a stream to the output file specifying that we're going to write to it but other people can still read from it
            Using FSOutput As New System.IO.FileStream(outputFile, IO.FileMode.Create, IO.FileAccess.Write, IO.FileShare.Read)
                '//Create our output file using the UT8 encoding, this can be changed to something else if needed
                Using SW As New System.IO.StreamWriter(FSOutput, System.Text.Encoding.UTF8)
                    '//Read the first line
                    Dim curLine = SR.ReadLine()
                    '//Create a loop that uses the curLine variable as well as the next two lines.
                    '//This method won't fail if there's bad data but might produce erroneous output
                    Do While Not String.IsNullOrEmpty(curLine) '//Use IsNullOrEmpty because the last line might be a blank line
                        '//Write our line of text
                        SW.WriteLine("({0}{2}{1}  is {0}{3}{1} x {0}{4}{1})", LQ, RQ, curLine, SR.ReadLine(), SR.ReadLine())
                        '//Read the next line and send back to the top of the loop
                        curLine = SR.ReadLine()
                    Loop
                End Using
            End Using
        End Using
    End Using
End Sub

И вы бы назвали этот метод следующим образом:

DoWork("C:\Input.txt", "C:\Output.txt")
person Chris Haas    schedule 07.01.2011