Re: Character in a text file
Is this actually a text file? Are you sure that it's not a binary file? If it is a text file then how was it written in the first place? You may need to specify the encoding when you create the StreamReader.
Re: Character in a text file
the file has an .str extension, but opens fine in notepad. it is a database that i need to eventually import into SQL.
Re: Character in a text file
It's just a whitespace character or special character that notepad displays as a "box", just have to find out what that character is... read the line in and display each ascii value... here is a sample on how to do it...
Code:
For Each Letter As Char In MyString
Messagebox.Show(" """ & Letter & """=" & Asc(Letter))
Next
Quotes are used so you can see the "space" that will show when it gets to the special character...
Re: Character in a text file
thanks. figured out a way to do it
Re: Character in a text file
Quote:
Originally Posted by eben
thanks. figured out a way to do it
Care to share?
Re: Character in a text file
here's the code:
Dim myStreamReader As StreamReader
Dim myNextInt As Integer
Dim FileName As String
Try
If TxtImportFile.Text = "" Then
MsgBox("No file selected", MsgBoxStyle.Information)
Else
FileName = TxtImportFile.Text
myStreamReader = File.OpenText(FileName)
TxtData.Clear()
myNextInt = myStreamReader.Read()
While myNextInt <> -1
TxtData.Text += ChrW(myNextInt)
myNextInt = myStreamReader.Read()
TxtData.Refresh()
End While
End If
Catch exc As Exception
Finally
If Not myStreamReader Is Nothing Then
myStreamReader.Close()
End If
End Try
it seems like the ChrW did the trick. i'm new to vb so i hope it wasn't the obvious thing to do, it took me a while before i figured it out.
Re: Character in a text file
That's certainly not a very efficient way to read a text file. I'm quite sure that if you specified a different encoding when opening the StreamReader it would read OK. Instead of this:
VB Code:
myStreamReader = File.OpenText(FileName)
which uses UTF-8 encoding, try this:
VB Code:
mySreamReader = New IO.StreamReader(FileName, System.Text.Encoding.Unicode)
If that doesn't work then you can use each of the other Encoding values to see if they work. That way you can use ReadLine or ReadToEnd to read your file rather than one character at a time.
Re: Character in a text file
i tried ASCII, UNICODE, UTF7 and UTF8 encodings, but none of them read past the character.
Re: Character in a text file
Quote:
Originally Posted by eben
i tried ASCII, UNICODE, UTF7 and UTF8 encodings, but none of them read past the character.
Bizarre. Out of interest, whats the integer value that you read?
Re: Character in a text file
If i read it correctly it seems to be a 2. don't waste too much of your time on this. thanks alot for your help so far
Re: Character in a text file
Hmm.. well if it was an Ascii "2", that would be a "^B" or "STX" character... STX meaning "Start Transmission"... very odd character to have in a text file...
Re: Character in a text file
would that have affected streamreader's readline or read methods?
Re: Character in a text file
I dont think so... should still read it....
How about uploading the text file, or a line in the textfile that contains the character? There is an attachments section when you post that allows you to upload files...
1 Attachment(s)
Re: Character in a text file
i uploaded the file. its AACD1.txt. it has a .str extension though.
Re: Character in a text file
Well it does seem to be a ASCII "2" value.... but It didn't have any problems reading in the line... displayed all the text...
VB Code:
Dim myreader As New IO.StreamReader("c:\AACD1.txt")
While myreader.Peek <> -1
MessageBox.Show(myreader.ReadLine) 'displayed the full line, with the character
End While
MyReader.Close()
Re: Character in a text file
Was even able to split the line on the "2" ascii character fine... so all should be fine on the streamreader side...
VB Code:
Dim myreader As New IO.StreamReader("c:\AACD1.txt")
While myreader.Peek <> -1
Dim MyStrings() As String = myreader.ReadLine.Split(Chr(2))
For Each str As String In MyStrings
MessageBox.Show(str) 'displays 2 messageboxes, with the split strings
Next
End While
MyReader.Close()
Re: Character in a text file
can you try doing the same with the file as an .str extension? i've got the 101 VB.NET samples, and their text reading program can also only read the file by characters. ReadLine and ReadToEnd does not seem to work.
Re: Character in a text file
The extension should be of no consequence, as the text will still be the same... unless the .STR file you have was another type of encoding, and it changed it when you opened and saved the line of text in notepad... On my end, without testing the actual STR file, simply changing the extension to ".STR" will have no effect, it would still read...
Re: Character in a text file
it seems like just renaming the file to a .txt type works, but the original .STR does not want to work with ReadLine or ReadToEnd. i tried all the encodings. unfortunately i have to write the program so it opens files of any type of extensions and i need to make sure it reads to the end.
thanks for your help
Re: Character in a text file
Have you tried just pasting my code in (from my first streamreader post), and read in the .STR file (just change "AACD1.txt" to "AACD1.STR")? It should loop for all lines in the file and display each line in a messagebox... the extension should have nothing to do with it...