o'm reading a text file into a textbox. problem is the character appears in the first line of text and streamreader does not read past this character. i need a way to open the text file, replace all similar characters and then save the text file. pls help
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.
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...
Last edited by gigemboy; Feb 6th, 2006 at 05:23 AM.
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.
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.
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...
Last edited by gigemboy; Feb 7th, 2006 at 04:53 AM.
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...
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.
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...
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.
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...