OK, jeśli masz tablicę bajtów, która ma 3 elementy i wygląda tak: (65, 66, 67)
to w tym momencie nie ma znaczenia, jak zapiszesz ten plik. Ale jeśli masz tablicę bajtów, która ma 3 elementy i wygląda tak: (0, 1, 2) to już jest różnica. Dlaczego? Dlatego, że nie wiesz, czym różni się plik tekstowy od binarnego. Plik tekstowy, to taki plik, który składa się jedynie z tekstu (widzialnych znaków). Możesz go otworzyć zwykłym notatnikiem i po prostu z niego czytać tekst. To jest plik tekstowy.
Plik binarny, to plik, który składa się też z niewidocznych znaków (taki utworzyłeś przez DataOutputStream).
Każdy znak ma swój kod ASCII. Teraz spójrz jeszcze raz na początek mojego posta - masz tam tą tablicę składającą się z 3 elementów: 65, 66, 67. Co to są? Jakieś inty, tak? Zgadza się. Ale jeśli te inty zapiszesz do pliku (używając WriteInt), to w pliku będą trzy liczby: 65, 66 i 67. Przypadkiem złożyło się tak, że kod ASCII 65 odpowiada literze A. Dlatego, jeśli taki plik otworzysz w notatniku, zobaczysz ABC.
Zrób teraz coś takiego. Nigdy więcej nie używaj Windowsowego Notatnika.
Uruchom sobie Total Commandera (jak nie masz, to ściągnij i tak Ci się przyda). Znajdź w nim plik, który stworzył Twój program. Podświetl go i wciśnij F3. Otworzy Ci się takie okienko z zawartością pliku.Teraz z menu Opcje wybierz "Heksadecymalnie". I dopiero teraz widzisz faktyczną zawartość pliku. To okno składa się z trzech kolumn. W pierwszej masz adres w pliku pierwszego znaku w danym rzędzie, np: "00000000:"
W drugiej kolumnie masz faktyczną zawartość pliku. Twój plik składa się z liczb. Te liczby są w postaci szesnastkowej (heksadecymalnej). Gdy wpisywałeś do pliku znak '\n' to tak naprawdę wpisywałeś znak o kodzie ASCII 10 (znak nazywa się "new line"). Jeśli wpisywałeś do pliku liczbę 27, to tak naprawdę wpisałeś znak o kodzie ASCII 27, czyli escape.
Trzecia kolumna w tym okienku to jest PRÓBA wypisania Ci tekstowej części pliku binarnego. Czyli tu następuje zamiana widocznych znaków ASCII (np. 65) na znak rozpoznawany przez człowieka - A. Kropka w tym przypadku oznaczać może kropkę (znak '.') lub znak niedrukowany. np. o kodzie ASCII 10.
Wszystkie kody podałem w formie dziesiętnej, a nie szesnastkowej.
Nie wiem, czy coś Ci rozjaśniłem, czy jeszcze bardziej zagmatwałem, ale nie potrafię teraz na szybko lepiej tego wytłumaczyć. Jeśli dalej nie ogarniasz, to zapraszam na priv.