|
web
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Using ByteArraysfiles have me confused. As per the tutorial, I used BinaryReader to read a file and put the contents into a ByteArray: Dim fsReadStream As New FileStream(MyFileName, FileMode.Open, FileAccess.Read) Dim brReader As New BinaryReader(fsReadStream) Dim ByteArray() As Byte While brReader.PeekChar() > -1 ByteArray = brReader.ReadBytes(1) ' This is the part where I don't know how to do End While brReader.Close() How do I actually use the data in that ByteArray. I have basically created a file containing some text, some images and some video (I plan to encrypt this later). Now I want to open the file and read it, then parse it, put the text into a label, put the image into a picturebox etc. Any tutorials you can point me to, or any information at all will be useful. Thanx, It all depends on what type of data you want to read from the Binary
file and the type of that data. The example you have quoted simply reads a single byte at a time out of the binary file which is not very usful and very inefficient if you want to read a whole string or image. I would recomend you look at some of the functions of BinaryReader as it is designed to perform the file parsing and can realy help you. I have to guess here as I do not know the format of your file but here is an example: UINT16 DataType UINT32 DataSize byte[] Data With this structure of data in the binary file I would call these functions on the BinaryReader object: DataType = brReader.ReadUInt16() DataSize = brReader.ReadUInt32() and assuming the data is a string string = brReader.ReadString() or MyByteArray = brReader.ReadBytes(DataSize) string = MyByteArray.ToString() You would obviously need to put in some checking to see when the end of the file has been reached. Anil Gupte wrote: Show quoteHide quote > I am learning how to read and write files. Text files were easy, but binary > files have me confused. As per the tutorial, I used BinaryReader to read a > file and put the contents into a ByteArray: > > Dim fsReadStream As New FileStream(MyFileName, FileMode.Open, > FileAccess.Read) > Dim brReader As New BinaryReader(fsReadStream) > Dim ByteArray() As Byte > While brReader.PeekChar() > -1 > ByteArray = brReader.ReadBytes(1) > > ' This is the part where I don't know how to do > > End While > brReader.Close() > > How do I actually use the data in that ByteArray. I have basically created > a file containing some text, some images and some video (I plan to encrypt > this later). Now I want to open the file and read it, then parse it, put > the text into a label, put the image into a picturebox etc. Any tutorials > you can point me to, or any information at all will be useful. > > Thanx, > -- > Anil Gupte > www.keeninc.net > www.icinema.com Olie:
I tried what you suggested and the string = brReader.ReadString() worked fine for the first part of the file, because it was string data and I put it in a loop as below: While brReader.PeekChar() > 31 And brReader.PeekChar() < 127 strRead = strRead & brReader.ReadString() Label1.Text = strRead End While However, the rest is not string data and I don't know how to treat it. As I mentioned in my original message, I am trying to create a composite file (like a package) consisting of text, pictures and other types of data (even a video). What I would ideally like is something like this: While brReader.PeekChar() > -1 ' until EOF Read some data Figure out what is in it (Text, part of an image. whatever) Take the text part and put it in a label to display (as above) Store the binary part in a variable (or append if I already have some in there) ... and keep going in this loop till I reach the end of the binary part Put the binary part in a PictureBox (assuming for the moment it is an image) Back to the top of the loop to read some more data (could be more text or another picture or whatever) End While Of course, I am the creator of the file (I wrote another program to write these types of files), so I can put markers that tell me where the text ends and the image part starts etc. Show quoteHide quote "Olie" <owa***@gmail.com> wrote in message news:1158310674.072420.254240@d34g2000cwd.googlegroups.com... > It all depends on what type of data you want to read from the Binary > file and the type of that data. The example you have quoted simply > reads a single byte at a time out of the binary file which is not very > usful and very inefficient if you want to read a whole string or image. > > I would recomend you look at some of the functions of BinaryReader as > it is designed to perform the file parsing and can realy help you. I > have to guess here as I do not know the format of your file but here is > an example: > > UINT16 DataType > UINT32 DataSize > byte[] Data > > With this structure of data in the binary file I would call these > functions on the BinaryReader object: > > DataType = brReader.ReadUInt16() > DataSize = brReader.ReadUInt32() > > and assuming the data is a string > > string = brReader.ReadString() > > or > > MyByteArray = brReader.ReadBytes(DataSize) > string = MyByteArray.ToString() > > You would obviously need to put in some checking to see when the end of > the file has been reached. > > > Anil Gupte wrote: >> I am learning how to read and write files. Text files were easy, but >> binary >> files have me confused. As per the tutorial, I used BinaryReader to read >> a >> file and put the contents into a ByteArray: >> >> Dim fsReadStream As New FileStream(MyFileName, FileMode.Open, >> FileAccess.Read) >> Dim brReader As New BinaryReader(fsReadStream) >> Dim ByteArray() As Byte >> While brReader.PeekChar() > -1 >> ByteArray = brReader.ReadBytes(1) >> >> ' This is the part where I don't know how to do >> >> End While >> brReader.Close() >> >> How do I actually use the data in that ByteArray. I have basically >> created >> a file containing some text, some images and some video (I plan to >> encrypt >> this later). Now I want to open the file and read it, then parse it, put >> the text into a label, put the image into a picturebox etc. Any >> tutorials >> you can point me to, or any information at all will be useful. >> >> Thanx, >> -- >> Anil Gupte >> www.keeninc.net >> www.icinema.com > I explained in my previous post how to read a single UInt value out of
the binary file. Just simply read out a value first to deternmine what type of data follows (string, picture, video). How you go about reading out the data depends on what variable you want to read the data to. In the case of a picture, the Bitmap constructor takes in a stream directly so you could just call the bitmap constructor with fsReadStream. Picture = New Bitmap(fsReadStream) I was guessing that there was a ToString() function on a byte array. The correct code to convert a byte array to a string is: Dim Encoder As New System.Text.UTF7Encoding() Dim MyString As String = Encoder.GetString(ByteArray) As for the video, I am not sure what to do with that and I think that reading a whole video into RAM is probably not the best idea. You could extract the video section to a seperate file and then just play the video from there. Anil Gupte wrote: Show quoteHide quote > Olie: > > I tried what you suggested and the string = brReader.ReadString() worked > fine for the first part of the file, because it was string data and I put it > in a loop as below: > > While brReader.PeekChar() > 31 And brReader.PeekChar() < 127 > strRead = strRead & brReader.ReadString() > Label1.Text = strRead > End While > However, the rest is not string data and I don't know how to treat it. As I > mentioned in my original message, I am trying to create a composite file > (like a package) consisting of text, pictures and other types of data (even > a video). What I would ideally like is something like this: > > While brReader.PeekChar() > -1 ' until EOF > Read some data > Figure out what is in it (Text, part of an image. whatever) > Take the text part and put it in a label to display (as above) > Store the binary part in a variable (or append if I already have some in > there) > ... and keep going in this loop till I reach the end of the binary part > Put the binary part in a PictureBox (assuming for the moment it is an > image) > Back to the top of the loop to read some more data (could be more text > or another picture or whatever) > End While > > Of course, I am the creator of the file (I wrote another program to write > these types of files), so I can put markers that tell me where the text ends > and the image part starts etc. > > -- > Anil Gupte > www.keeninc.net > www.icinema.com > > "Olie" <owa***@gmail.com> wrote in message > news:1158310674.072420.254240@d34g2000cwd.googlegroups.com... > > It all depends on what type of data you want to read from the Binary > > file and the type of that data. The example you have quoted simply > > reads a single byte at a time out of the binary file which is not very > > usful and very inefficient if you want to read a whole string or image. > > > > I would recomend you look at some of the functions of BinaryReader as > > it is designed to perform the file parsing and can realy help you. I > > have to guess here as I do not know the format of your file but here is > > an example: > > > > UINT16 DataType > > UINT32 DataSize > > byte[] Data > > > > With this structure of data in the binary file I would call these > > functions on the BinaryReader object: > > > > DataType = brReader.ReadUInt16() > > DataSize = brReader.ReadUInt32() > > > > and assuming the data is a string > > > > string = brReader.ReadString() > > > > or > > > > MyByteArray = brReader.ReadBytes(DataSize) > > string = MyByteArray.ToString() > > > > You would obviously need to put in some checking to see when the end of > > the file has been reached. > > > > > > Anil Gupte wrote: > >> I am learning how to read and write files. Text files were easy, but > >> binary > >> files have me confused. As per the tutorial, I used BinaryReader to read > >> a > >> file and put the contents into a ByteArray: > >> > >> Dim fsReadStream As New FileStream(MyFileName, FileMode.Open, > >> FileAccess.Read) > >> Dim brReader As New BinaryReader(fsReadStream) > >> Dim ByteArray() As Byte > >> While brReader.PeekChar() > -1 > >> ByteArray = brReader.ReadBytes(1) > >> > >> ' This is the part where I don't know how to do > >> > >> End While > >> brReader.Close() > >> > >> How do I actually use the data in that ByteArray. I have basically > >> created > >> a file containing some text, some images and some video (I plan to > >> encrypt > >> this later). Now I want to open the file and read it, then parse it, put > >> the text into a label, put the image into a picturebox etc. Any > >> tutorials > >> you can point me to, or any information at all will be useful. > >> > >> Thanx, > >> -- > >> Anil Gupte > >> www.keeninc.net > >> www.icinema.com > > Thanx much, I will try it. Appreciate the help.
Show quoteHide quote "Olie" <owa***@gmail.com> wrote in message news:1158573703.561672.147830@i3g2000cwc.googlegroups.com... >I explained in my previous post how to read a single UInt value out of > the binary file. Just simply read out a value first to deternmine what > type of data follows (string, picture, video). How you go about reading > out the data depends on what variable you want to read the data to. In > the case of a picture, the Bitmap constructor takes in a stream > directly so you could just call the bitmap constructor with > fsReadStream. > > Picture = New Bitmap(fsReadStream) > > I was guessing that there was a ToString() function on a byte array. > The correct code to convert a byte array to a string is: > > Dim Encoder As New System.Text.UTF7Encoding() > Dim MyString As String = Encoder.GetString(ByteArray) > > As for the video, I am not sure what to do with that and I think that > reading a whole video into RAM is probably not the best idea. You could > extract the video section to a seperate file and then just play the > video from there. > > Anil Gupte wrote: >> Olie: >> >> I tried what you suggested and the string = brReader.ReadString() worked >> fine for the first part of the file, because it was string data and I put >> it >> in a loop as below: >> >> While brReader.PeekChar() > 31 And brReader.PeekChar() < 127 >> strRead = strRead & brReader.ReadString() >> Label1.Text = strRead >> End While >> However, the rest is not string data and I don't know how to treat it. >> As I >> mentioned in my original message, I am trying to create a composite file >> (like a package) consisting of text, pictures and other types of data >> (even >> a video). What I would ideally like is something like this: >> >> While brReader.PeekChar() > -1 ' until EOF >> Read some data >> Figure out what is in it (Text, part of an image. whatever) >> Take the text part and put it in a label to display (as above) >> Store the binary part in a variable (or append if I already have some >> in >> there) >> ... and keep going in this loop till I reach the end of the binary >> part >> Put the binary part in a PictureBox (assuming for the moment it is an >> image) >> Back to the top of the loop to read some more data (could be more >> text >> or another picture or whatever) >> End While >> >> Of course, I am the creator of the file (I wrote another program to write >> these types of files), so I can put markers that tell me where the text >> ends >> and the image part starts etc. >> >> -- >> Anil Gupte >> www.keeninc.net >> www.icinema.com >> >> "Olie" <owa***@gmail.com> wrote in message >> news:1158310674.072420.254240@d34g2000cwd.googlegroups.com... >> > It all depends on what type of data you want to read from the Binary >> > file and the type of that data. The example you have quoted simply >> > reads a single byte at a time out of the binary file which is not very >> > usful and very inefficient if you want to read a whole string or image. >> > >> > I would recomend you look at some of the functions of BinaryReader as >> > it is designed to perform the file parsing and can realy help you. I >> > have to guess here as I do not know the format of your file but here is >> > an example: >> > >> > UINT16 DataType >> > UINT32 DataSize >> > byte[] Data >> > >> > With this structure of data in the binary file I would call these >> > functions on the BinaryReader object: >> > >> > DataType = brReader.ReadUInt16() >> > DataSize = brReader.ReadUInt32() >> > >> > and assuming the data is a string >> > >> > string = brReader.ReadString() >> > >> > or >> > >> > MyByteArray = brReader.ReadBytes(DataSize) >> > string = MyByteArray.ToString() >> > >> > You would obviously need to put in some checking to see when the end of >> > the file has been reached. >> > >> > >> > Anil Gupte wrote: >> >> I am learning how to read and write files. Text files were easy, but >> >> binary >> >> files have me confused. As per the tutorial, I used BinaryReader to >> >> read >> >> a >> >> file and put the contents into a ByteArray: >> >> >> >> Dim fsReadStream As New FileStream(MyFileName, FileMode.Open, >> >> FileAccess.Read) >> >> Dim brReader As New BinaryReader(fsReadStream) >> >> Dim ByteArray() As Byte >> >> While brReader.PeekChar() > -1 >> >> ByteArray = brReader.ReadBytes(1) >> >> >> >> ' This is the part where I don't know how to do >> >> >> >> End While >> >> brReader.Close() >> >> >> >> How do I actually use the data in that ByteArray. I have basically >> >> created >> >> a file containing some text, some images and some video (I plan to >> >> encrypt >> >> this later). Now I want to open the file and read it, then parse it, >> >> put >> >> the text into a label, put the image into a picturebox etc. Any >> >> tutorials >> >> you can point me to, or any information at all will be useful. >> >> >> >> Thanx, >> >> -- >> >> Anil Gupte >> >> www.keeninc.net >> >> www.icinema.com >> > > BTW, I forgot to mention:
MyByteArray = brReader.ReadBytes(DataSize) string = MyByteArray.ToString() does not work, because apparently there is no method called ToString for MyByteArray Show quoteHide quote "Olie" <owa***@gmail.com> wrote in message news:1158310674.072420.254240@d34g2000cwd.googlegroups.com... > It all depends on what type of data you want to read from the Binary > file and the type of that data. The example you have quoted simply > reads a single byte at a time out of the binary file which is not very > usful and very inefficient if you want to read a whole string or image. > > I would recomend you look at some of the functions of BinaryReader as > it is designed to perform the file parsing and can realy help you. I > have to guess here as I do not know the format of your file but here is > an example: > > UINT16 DataType > UINT32 DataSize > byte[] Data > > With this structure of data in the binary file I would call these > functions on the BinaryReader object: > > DataType = brReader.ReadUInt16() > DataSize = brReader.ReadUInt32() > > and assuming the data is a string > > string = brReader.ReadString() > > or > > MyByteArray = brReader.ReadBytes(DataSize) > string = MyByteArray.ToString() > > You would obviously need to put in some checking to see when the end of > the file has been reached. > > > Anil Gupte wrote: >> I am learning how to read and write files. Text files were easy, but >> binary >> files have me confused. As per the tutorial, I used BinaryReader to read >> a >> file and put the contents into a ByteArray: >> >> Dim fsReadStream As New FileStream(MyFileName, FileMode.Open, >> FileAccess.Read) >> Dim brReader As New BinaryReader(fsReadStream) >> Dim ByteArray() As Byte >> While brReader.PeekChar() > -1 >> ByteArray = brReader.ReadBytes(1) >> >> ' This is the part where I don't know how to do >> >> End While >> brReader.Close() >> >> How do I actually use the data in that ByteArray. I have basically >> created >> a file containing some text, some images and some video (I plan to >> encrypt >> this later). Now I want to open the file and read it, then parse it, put >> the text into a label, put the image into a picturebox etc. Any >> tutorials >> you can point me to, or any information at all will be useful. >> >> Thanx, >> -- >> Anil Gupte >> www.keeninc.net >> www.icinema.com >
can a method implement an interface and handle an event at the same time?
how to rollback a procedure (sqlserver) from VB2005? determining end of file FileSystemWatcher across the network Key Required for .Update with mdb file ? Assuming True (newbie VB 2005 EE ) composing string from variables how to make base and derived class use the same member variable? Subtract Days from a Date Deserializing object tracing a line in a bitmap? |
|||||||||||||||||||||||