2011-01-07 5 views
0

Ich habe eine TXT-Datei bestehend aus einer vertikalen Liste. Die Liste enthält x-Menge von Gruppen, aber was Standard ist, ist, dass sie immer aus drei Entitäten bestehen.Gesammelte Daten aus der TXT-Datei umschreiben?

Beispiel wie folgt:

PANNEL A 
38 
2440 

erläutert:

NAME 
WIDTH 
LENGTH 

eine Liste von drei Artikel (obwohl Liste x-Mengen enthalten kann) ist identisch mit:

NEW BEAM 
38 
2440 
WOOD 
22 
610 
ITEM A 
50 
1220 

Ich muss jetzt eine neue TXT-Datei erstellen, die wie folgt geschrieben wird:

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

Wie mache ich das mit VB.NET?

Antwort

0

Hier ist, wie ich es gehen würde:

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 

Und Sie haben diese Methode aufrufen durch:

DoWork("C:\Input.txt", "C:\Output.txt")