2016-07-23 2 views
-1

Я написал программу для прохождения фиксированного файла и вставки | где это необходимо. Программа работает нормально и отображает в консоли правильно. Проблема в том, что я не могу получить строку из консоли для записи в строку в файле. Все попытки заканчиваются пустым файлом или каждой строкой строки, написанной как отдельная строка. В приведенном ниже коде показан тот, где он должен записать вывод в файл, но файл пуст..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 

ответ

0

Вы затем установить стандарт из потока в 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 
Смежные вопросы