Home All Groups Group Topic Archive Search About

StreamReader/StreamWriter problem

Author
17 Nov 2006 3:35 AM
Thelonious Monk
I have a problem where some data is being eliminated.



The problem is that the data contains signed numeric fields (the low-order
byte of a negative number uses the first 4 bits as a sign and the last 4
bits as the low-order digit. This produces byte values higher than X'7F'. To
be more specific these values are hexadecimal X'B0' through X'B9'. It
appears the program is eliminating any byte values greater than X'7F', thus
shortening the record.  I am using StreamReader and StreamWriter for the
I/O.



Is it a possibility that the data contained in the file is written in UTF-7
and the code needs to be adjusted to UTF-8???  Here is how I am opening the
input file:



    Public Function ReadInFile() As Integer
        Dim reader As StreamReader
        Dim output As String = String.Empty

        Try
            reader = File.OpenText(inFileName)
            output = String.Format("Input file {0} is opened successfully",
inFileName)
            Logger.Log(output)
            Dim line As String = reader.ReadLine()
            While Not line Is Nothing
                Dim record As CGIRecordIn = New CGIRecordIn(line)
                inRecords.Add(record)
                line = reader.ReadLine()
            End While

        Catch ex As Exception
            output = String.Format("Failed reading {0}", inFileName)
            Logger.Log(output)
        Finally
            reader.Close()

        End Try
        ReadInFile = inRecords.Count
        output = String.Format("Read {0} valid records from input file",
ReadInFile)
        Logger.Log(output)
    End Function

Here is how I am opening the output file:

    Public Sub WriteOutFile()
        Dim recordOut As CGIRecordOut
        Dim writer As StreamWriter
        Dim output As String
        Try
            writer = File.CreateText(outFileName)
            output = String.Format("Output file {0} is opened successfully
for writing", outFileName)
            Logger.Log(output)

            For Each recordOut In outRecords
                recordOut.Build()
                writer.WriteLine(recordOut.Rec)
            Next

        Catch ex As Exception
            output = String.Format("Failed writing to {0}", outFileName)
            Logger.Log(output)
        Finally
            writer.Close()
        End Try

        Logger.Log("Finished writing output file")
    End Sub

I am not too clear as to the parameter that is needed to tell VB.NET that
the file is being opened as UTF-8 and written in the same format.  Any help
would be greatly appreciated.

Thanks!

Author
17 Nov 2006 4:12 AM
Mike C#
"Thelonious Monk" <theloniousmonk***@hotmail.com> wrote in message
news:eaDB4lfCHHA.4312@TK2MSFTNGP06.phx.gbl...

Might want to look into

' StreamReader(filename, encoding)
Dim reader As New StreamReader(inFilename, System.Text.Encoding.UTF8)

and

' StreamWriter(filename, append?, encoding)
Dim writer As New StreamWriter(outFilename, False,
System.Text.Encoding.UTF8)

That might do the trick.  I apologize for being too darn tired to test right
now...
Author
25 Nov 2006 1:53 AM
Thelonious Monk
Thanks, Mike C#.  Looks like it worked.  Thanks again for your help.

Show quoteHide quote
"Mike C#" <x**@xyz.com> wrote in message
news:8Fa7h.377$Jm2.116@newsfe08.lga...
>
> "Thelonious Monk" <theloniousmonk***@hotmail.com> wrote in message
> news:eaDB4lfCHHA.4312@TK2MSFTNGP06.phx.gbl...
>
> Might want to look into
>
> ' StreamReader(filename, encoding)
> Dim reader As New StreamReader(inFilename, System.Text.Encoding.UTF8)
>
> and
>
> ' StreamWriter(filename, append?, encoding)
> Dim writer As New StreamWriter(outFilename, False,
> System.Text.Encoding.UTF8)
>
> That might do the trick.  I apologize for being too darn tired to test
> right now...
>