>> Home >> Java >> Java: Binární zápis

 

Java: Binární zápis

 

V tomto článku si ukážeme, jak lze v jazyce Java zapisovat binární data do souborů. Zapisovat budeme pomocí třídy DataOutputStream, která je právě k zápisu binárních dat určena. Tyto data bychom poté mohli číst objektem třídy DataInputStream, ale to si ukážeme až jindy.

Pokud chceme pracovat s těmito třídami, budeme muset importovat balíček tříd java.io.*.

 

import java.io.*;

 

Dále budeme potřebovat nějaký soubor, do kterého budeme moci zapisovat. Ten si můžeme vytvořit téměř jakkoliv, případně použít metodu, kterou jsem popsal v tomto článku. V našem příkladu budu pracovat se souborem, který má název "ukazka.bin" a sídlí ve stejné cestě, jako moje třída.

Když budeme tvořit instanci třídy DataOutputStream a budeme chtít zapisovat do nějakého souboru, budeme jí muset předat objekt třídy FileOutputStream. V našem případě by vytváření instance třídy DataOutputStream vypadalo takto.

 

DataOutputStream vstup = new DataOutputStream(new FileOutputStream("ukazka.bin"));

 

Na naši instanci vstup již můžeme volat metody. Metody, které slouží pro zápis do souboru se nazývají write***. Za hvězdičky se dodává datový typ(nejde přímo o datový typ, ale o název metody), který chceme zapsat. Chceme li tedy uložit nějaké celé číslo datového typu int, pak použijeme metodu writeInt. U zápisu reálného čísla typu double bychom použili metodu writeDouble. U textového řetězce bychom volali zase metodu writeChars. A tak dále.

Takto by již mohla vypadat metoda main, ve které bychom zapsali do našeho souboru celé číslo datového typu int 199 a textový řetězec "Binary World!".

 

public class Main {
    public static void main(String[] args) throws IOException {
        int cislo = 199;
        String retezec = "Binary World!";
        DataOutputStream vstup = new DataOutputStream(new FileOutputStream("ukazka.bin"));
        vstup.writeInt(cislo);
        vstup.writeChars(retezec);
        vstup.close();
    }
}

 

Myslím, že zde již není třeba nic komentovat. Možná jen, že je vhodné po všech zápisech uzavřít stream, který provádí zápis do souboru - pomocí metody close().

Pokud bychom otevřeli náš soubor v nějakém hexa editoru, viděli bychom následující.

hexa editor

Jak je vidět na obrázku, tak první 4 bajty (32 bitů) obsazuje naše celé číslo typu int s hodnotou 199. První tři bajty jsou prázdné, protože takto malé číslo se dá zapsat pomocí jednoho bajtu. Zabrali jsme ovšem 4 bajty, protože naše číslo bylo deklarováno jako int, který v paměti rezervuje a užívá 32 bitů. Poslední bajt reprezentující naše číslo má v hexa zápisu hodnotu C7, což po převedení do desítkové soustavy je právě našich 199. Ostatní bajty obsahují znaky našeho řetězce "Binary World!".

 

pridej.cz Přidat.eu záložku

 

Diskuze k článku


 

Zatím žádné komentáže k tomuto článku.

 

Přidat nový komentář