Binarny zapis i odczyt plików

Odpowiedz Nowy wątek
2017-02-16 23:16
0

Witam próbuję zrozumień jak są zapisywane dane w pliku przy pomocy

  1. FileOutputStream
  2. DataOutputStraem
    w 1 mam tablicę typu byte która jest strumieniem jak zapisuję jakieś dane i odpalam plik notatnikiem to mam normalnie dane które zapisałem
    natomiast jak zapisuję 2 to w pliku txt jest to jakoś dziwnie zapisane (jak przy serializacji) czemu tak się dzieje, oraz nie wiem czy robię coś źle jak coś zapiszę przez 2 i chcę odczytać przez FileInputStream do bufora (tablica byte) to odczytuje mi właśnie ten dziwny kod a nie normalny tekst. Czemu tak się dzieje. Ps nie interesuje mnie odpowiedź "bo tak" jestem zbyt ciekawski :)

Pozostało 580 znaków

2017-02-17 13:21
0

jak zapisuję liczbę 37 przez writeInt() to zapisuję 00100101 tylko że na 32 bitach
jak zapisuję tekst AB przez writeUTF() to zapisuję 0100 0001 0100 0010
A B
Jak notatnik odpala to odczytuje tego inta 00100101 jako znak %
a tekst odczyta jako AB dobrze mówię?

Pozostało 580 znaków

2017-02-17 13:36
0

@bogdans: Doprawdy? To teraz na poparcie swojej tezy zrób taki program i przedstaw nam wnioski.

Pozostało 580 znaków

2017-02-17 13:40
0
Masterpc96 napisał(a):

jak zapisuję liczbę 37 przez writeInt() to zapisuję 00100101 tylko że na 32 bitach
jak zapisuję tekst AB przez writeUTF() to zapisuję 0100 0001 0100 0010
A B
Jak notatnik odpala to odczytuje tego inta 00100101 jako znak %
a tekst odczyta jako AB dobrze mówię?

Zgadza się. Ale nie do końca. Gdybyś użył metody writeANSI (jeśli taka istnieje), to wtedy byłaby to prawda. Jeśli zapisujesz przez UTF, to każdy znak(w sensie tekst) zajmuje dwa bajty, a nie jeden. W tym wypadku drugim znakiem litery będzie po prostu 0000 0000. Czyli nie dostaniesz: 0100 0001 0100 0010 (AB), tylko: 0100 0001 0000 0000 0100 0010 0000 0000 co w edytorze (np. Total Commander) zobaczysz jako

A.B.

Zwróć uwagę na te kropki. Notatnik oczywiście pokaże Ci AB, ale jak już mówiłem - nie używaj Notatnika do takich rzeczy.

Pozostało 580 znaków

2017-02-17 14:05
0

Czyli oprócz dodania dodatkowego bajtu mam rację

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0