.NET Console.WriteLine() Console.SetOut

Я написал программу, чтобы пройти через фиксированный файл и вставить | при необходимости программа работает нормально и корректно отображается в консоли. Проблема в том, что я не могу получить строку из консоли для записи в строку в файле. Все попытки заканчиваются пустым файлом или каждой строкой строки, записанной в виде отдельной строки. Код ниже показывает тот, где он должен записать вывод в файл, но файл пуст.

Imports System.IO
Module Module1
    Sub Main()

        Dim stdFormat As Integer() = {3, 13, 11, 5, 2, 2, 13, 14, 30, 15, 76, 80, 95, 100, 50, 2, 10, 30}

        Using MyReader As New FileIO.TextFieldParser("SOURCE.txt")
            MyReader.TextFieldType = FileIO.FieldType.FixedWidth
            MyReader.FieldWidths = stdFormat

            Dim currentRow As String()
            While Not MyReader.EndOfData

                Try

                    Dim rowType = MyReader.PeekChars(3)

                    If String.Compare(rowType, "Err") = 0 Then


                    Else

                        MyReader.SetFieldWidths(stdFormat)

                    End If

                    currentRow = MyReader.ReadFields

                    For Each newString In currentRow


                        Console.Write(newString & "|")


                    Next


                    Dim file = New FileStream("test.txt", FileMode.Append)

                    Dim standardOutput = Console.Out

                    Using writer = New StreamWriter(file)

                        Console.SetOut(writer)

                        Console.WriteLine()

                        Console.SetOut(standardOutput)

                    End Using


                Catch ex As FileIO.MalformedLineException



                End Try

            End While


        End Using

        Console.ReadLine()


    End Sub

End Module

1 ответ

Затем вы устанавливаете стандартный поток вывода на writerнаписание одной новой строки для стандарта (перенаправлено на writer), затем сброс стандартного выходного потока.

Что вам нужно сделать, это записать в файл. Не возиться с перенаправлением потоков. Если мы объединяем консоль и запись файлов, мы можем сделать это немного чище.

Using writer = New StreamWriter(file)
    String newStr = ""
    For Each columnStr In currentRow
        newStr = columnStr & "|"
        writer.WriteLine(newStr)
        // If you don't want the console output, just remove the next line
        Console.WriteLine(newStr)
    Next
End Using
Другие вопросы по тегам