Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Malo cudno ponasanje BinaryWriter.Write() metoda

[es] :: .NET :: Malo cudno ponasanje BinaryWriter.Write() metoda

[ Pregleda: 1469 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Shadowed
Vojvodina

Član broj: 649
Poruke: 12882



+4827 Profil

icon Malo cudno ponasanje BinaryWriter.Write() metoda14.05.2007. u 19:47 - pre 219 meseci
Code:
Dim i As String = "bla"
        Dim mystream As New System.IO.BinaryWriter(New System.IO.FileStream("I:\blah.txt", IO.FileMode.Create, IO.FileAccess.Write))
        mystream.Write(i)
        mystream.Close()

Napravi fajl od 4 bajta - 03 62 6C 61. Poslednja 3 bajta odgovaraju karakterima iz stringa. Ukoliko string ima 4 karaktera, prvi bajt ima vrednost 04 itd. dok ne predje 255 karaktera, onda ima dva dodatna bajta na pocetku.
E sad, zasto li se to desava i mogu li nekako da izbegnem?

I jos jedno pitanje usput. Trebam da u fajl upisujem podatke na sledeci nacin:
jedan red je neki broj, zatim idu binarni podaci poznate duzine, pa opet u novom redu broj (pa prelazak u novi red) pa binarni podaci poznate (jednake prethodnoj) duzine.
Koji mi je najbolji nacin za ovo? Uglavnom stream-ovi mogu WriteLine ali ne WriteBytes ili obrnuto. Naravno, mogu da pretvorim Integer u string pa da karakter po karakter upisujem byte-ove, ali bih voleo neki "lepsi" nacin.
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
195.252.78.*



+311 Profil

icon Re: Malo cudno ponasanje BinaryWriter.Write() metoda14.05.2007. u 21:29 - pre 219 meseci
Ovo prvo je nacin na koji binary writter ispisuje string (length prefixed), to verovatno ne mozes da promeniš, takva je implementacija
ali ako hoceš da baš ovo upiseš, znači samo 3 karaktera probaj da upiseš niz bajtova (umesto stringa) koje ćeš za taj string dobiti funkcijom GetBytes(i) nekog Encoding objekta (npr ASCII)

Ovo drugo, u ovom trenutku mi pada jedno rešenje (ne znam da li je najbolje) a to je da napraviš dva Writer-a koja
koriste isti FileStream i onda da pozivaš jedan od njih kada upisuješ binarne podatke a drugi kad upisuješ tekstualne (npr. BinaryWriter i StreamWriter)
ili pak da korisits samo postojeci BinaryWriter kom ces davati nizove bajtova umesto string podataka (kao što je gore napisano).

Pozdrav!
 
Odgovor na temu

[es] :: .NET :: Malo cudno ponasanje BinaryWriter.Write() metoda

[ Pregleda: 1469 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.