Shrnutí na Objektově orientované programování v Javě
Objektově orientované programování v Javě: Komplexní průvodce
Úvod
Vstup a výstup (I/O) se zabývá tím, jak program načítá a ukládá data ze zdrojů jako soubory a jak tato data předává mezi systémy pomocí standardních formátů. Tento materiál vysvětluje základní typy tříd a proudů pro práci se soubory, popisuje binární a textové I/O a představuje běžné formáty pro přenos dat: XML a JSON.
Definice: Vstup (input) znamená čtení dat z externího zdroje, výstup (output) znamená zápis dat do externího cíle.
Základní pojmy rozdělené po částech
1) Práce se soubory a cestami
- File: reprezentace souboru nebo složky. Používá se pro práci s cestou, kontrolou existence a zjištěním velikosti. Hodí se pro jednoduché operace (existence, přejmenování, smazání).
Definice: Objekt „File" představuje položku v souborovém systému (soubor nebo adresář) a poskytuje metody pro základní správu.
- Files: utilitní třída pro moderní práci se soubory a cestami (čtení všech řádků, zápis, kopírování, mazání). Pracuje s objekty typu Path.
2) Textové vs binární I/O
- Textové proudy pracují se znaky (char), binární proudy s byty (byte).
Tabulka: srovnání textových a binárních proudů
| Třída / skupina | Typ dat | Vhodné pro | Klíčové vlastnosti |
|---|---|---|---|
| FileWriter / FileReader | Znaky (char) | Zápis/čtení menších textových souborů | Jednoduché, ale neefektivní pro velké soubory |
| BufferedWriter / BufferedReader | Znaky (char) | Efektivní práce s textem | Interní buffer, vhodné pro větší objemy |
| InputStream (abstr.) | Byty (byte) | Základ pro binární vstup | Nadtřída pro všechny binární vstupy |
| FileInputStream / FileOutputStream | Byty (byte) | Obrázky, MP3, PDF, binární soubory | Přímé čtení/zápis do souboru |
| DataInputStream / DataOutputStream | Primitivní typy | Ukládání čísel a primitiv | Umožňuje číst/zapisovat int, float apod. ve strojově čitelném formátu |
| ObjectInputStream / ObjectOutputStream | Objekty | Serializace celých objektů | Umožňuje zapsat objekt, musí implementovat Serializable |
3) Kdy použít který proud
- Použijte FileReader/FileWriter pro jednoduché textové soubory s malým objemem.
- Použijte BufferedReader/BufferedWriter pokud čtete nebo zapisujete větší množství textu (výkon díky bufferu).
- Použijte FileInputStream/FileOutputStream pro binární data (obrázky, multimédia).
- Použijte DataInputStream/DataOutputStream pokud potřebujete uložit primitivní datové typy v binární podobě.
- Použijte ObjectInputStream/ObjectOutputStream pro uložení celých objektů (serializace).
Definice: Serializace znamená převod objektu do sekvence bytů, kterou lze uložit do souboru nebo přenést po síti.
Praktický příklad: čtení textu efektivně
- Otevřete soubor pomocí FileReader
- Zabalte ho do BufferedReader
- Čtěte po řádcích
Praktické použití: načtení konfiguračního souboru, logování, import dat z CSV.
Praktický příklad: ukládání primitivních hodnot binárně
- Použití DataOutputStream: zapisujete $int$, $float$, $double$ přímo v binárním formátu, což šetří místo a zrychluje zápis/čtení oproti textové serializaci.
4) Formáty pro předávání dat: XML a JSON
XML
- Strukturovaný značkovací jazyk vhodný pro konfigurace a starší systémy (např. SOAP).
- Typy parserů:
- DOM: načte celé XML do paměti jako strom — jednoduché pro manipulaci, nevhodné pro velké soubory.
- SAX: událostmi řízený parser (startElement, endElement) — nízká paměťová náročnost.
- StAX: pull parser, program řídí čtení pomocí iterátoru.
- Nástroje a mapování: JAXB, XStream.
- Práce s XML: JAXP nebo dom4j, DocumentBuilder pro DOM, SAXParser pro SAX.
- XSLT: převod XML do HTML nebo jiných formátů.
- XSD: schéma pro kontrolu struktury XML.
Definice: DOM (Document Object Model) je datová reprezentace XML ve stromové podobě, která umožňuje náhodný přístup a úpravy.
Už máš účet? Přihlásit se
Vstup a výstup - soubory a formáty
Klíčová slova: Programování, Java, Vnitřní třídy, Grafické uživatelské rozhraní, Funkcionální programování, Vícevláknové programování, Perzistence dat, Vstup a výstup
Klíčové pojmy: File reprezentuje soubor nebo adresář a kontroluje existenci a velikost, Files poskytuje moderní utilitní metody jako readAllLines, write, copy, delete, FileReader/FileWriter jsou vhodné pro malé textové soubory, BufferedReader/BufferedWriter mají interní buffer a zvyšují výkon při čtení/zápisu textu, FileInputStream/FileOutputStream čtou a zapisují binární data (obrázky, MP3, PDF), DataInputStream/DataOutputStream ukládají primitivní typy v binárním formátu, ObjectInputStream/ObjectOutputStream umožňují serializaci objektů (Serializable), XML používá DOM, SAX a StAX; XSD kontroluje strukturu; XSLT transformuje XML, JSON je kompaktnější než XML, podporuje streaming, tree model a data binding, Pro webové API se doporučuje JSON, pro starší systémy nebo přísné schémata XML, Používejte buffered proudy pro větší textové soubory a binární proudy pro média, Serializace může být nekompatibilní mezi verzemi tříd