České vysoké učení technické Fakulta elektrotechnická S oubory Jazyk JAVA A0B36PRI - PROGRAMOVÁN Í v 1.01.

Slides:



Advertisements
Podobné prezentace
A1PRG - Programování – Seminář Ing. Michal Typová konverze, oblast platnosti, paměťové třídy 9 Verze
Advertisements

(instance konkrétní třídy)
Vstup a výstup Ing. Lumír Návrat  katedra informatiky, A-1018 
VISUAL BASIC Práce se soubory.
Pole, ukazatele a odkazy
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
Strukturované datové typy
Algoritmy I. Cvičení č. 10.
PHP Práce se soubory v PHP - 13
Práce se soubory. Ukládání dat Textové soubory s jednoduchou strukturou (např..txt a.csv) textové soubory s vnitřní hierarchií (např..xml) Soubory binárního.
Počítače a programování 1. Obsah přednášky Výjimky - základní typy výjimek Způsoby zpracování výjimek.
Programování v C++ Cvičení.
Čtvrté cvičení Objektové programování Objektový model v Javě
J a v a Začínáme programovat Lucie Žoltá metody, objekty, konstruktor.
J a v a Začínáme programovat Lucie Žoltá. Odkazy - oficiální stránky (překladače, help, metody, vývojové prostředí NetBeans,...)
KIV/PPA1 cvičení 11 Cvičící: Pavel Bžoch. Osnova cvičení Souborový vstup a výstup Práce s textovými soubory.
Práce se soubory. * soubory patří k základním datovým prvkům v počítači * převážná většina programovacích jazyků má podporu určité formy práce se soubory.
A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce pro práci se soubory 13 Verze
PRÁCE S PROUDY V.NET FRAMEWORK APLIKACÍCH Architektura technologie.NET Jan Martinovič, FEI - Katedra Informatiky.
Algoritmy a programovací techniky
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
C# - Exceptions (výjimky)
Objektové programování
Gramatiky a jazyky Přednáška z předmětu Řízení v komplexních systémech
Jedenácté cvičení Vlákna. Java cv112 Vlákna Operační systém Mutitasking – více úloh se v operačním programu vykonává „současně“ Java Multithreading -
Seminář C cvičení Obsluha výjimek Ing. Jan Mikulka.
Práce se soubory Soubory se používají pro ukládání dat pro pozdější použití. Dalším a lepším způsobem jak ukládat data je použití databáze. Soubory se.
Alg91 Textové soubory Na rozdíl od jiných typů souborů jsou textové soubory určené pro gramotné lidské oko. Textový soubor je posloupnost znaků členěná.
Počítače a programování 1
3. Příkazy  Příkazy dělíme na jednoduché a strukturované.  Jednoduché příkazy - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu a výstupu,
OSNOVA: a)Programování se soubory b)Záloha databáze v souboru c) Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování.
KIV/PPA1 cvičení 10 Cvičící: Pavel Bžoch. Osnova cvičení Výjimky a práce s nimi Nácvik na online test.
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
Algoritmizace a programování Binární soubory - 14 Mgr. Josef Nožička IKT Algoritmizace a programování
IB111 Programování a algoritmizace
Návrh a tvorba WWW Přednáška 5 Úvod do jazyka PHP.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Gymnázium prof. Jana Patočky Jindřišská Praha 1 „Praha & EU: Investujeme do vaší.
Sedmé cvičení Soubory Vstupně/výstupní proudy. Java cv72 Soubory Třída File Objekt popisující soubor na filesystému Nedá se z něho přímo číst a psát Představuje.
Algoritmizace a programování Textové soubory - 13 Mgr. Josef Nožička IKT Algoritmizace a programování
Metodika objektového přístupu při tvorbě překladačů. Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.
Šesté cvičení Výjimky Balíky.
1 Počítače a programování 1 13.přednáška. 2 Obsah přednášky Vstupy a výstupy – 1.část.
Netrvaloppa21 Vytvořte třídu Student pro reprezentaci struktury student na ZČU. Atributy třídy budou fakulta a osobniCislo. Název třídy: Student proměnné.
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
JUI přednáška Vstup a výstup, cykly RNDr. Jiří Dvořák, CSc.
PŘÍKAZ while úkol 1_42.
Soubory BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část I.
České vysoké učení technické Fakulta elektrotechnická Datové typy, výrazy vstup, výstup Jazyk JAVA A0B36PRI - PROGRAMOVÁN Í v1.02.
Balíky Hlavní balík - main - zatím jsme s jiným nepracovali Rozdělují tzv. namespaces = množiny jmen pro proměnné $lemma = "cukr"; znamená $main::lemma.
Řízení běhu programu, řídící struktury A0B36PRI - PROGRAMOVÁNÍ
Algoritmizace a programování Soubory. Oč jde? Vytvoření externího souboru Vytvoření externího souboru Tento soubor může být: Tento soubor může být: Textový.
NÁZEV ŠKOLY: Střední odborná škola Net Office, spol. s r.o., Orlová-Lutyně AUTOR: Ing. Adéla Tomalová NÁZEV: Podpora výuky v technických oborech TEMA:
Moduly.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně
Úvod do Pythonu – IO operace se soubory.
C# konzole – Podíl dvou čísel, podmínka IF
NÁZEV ŠKOLY: Střední odborná škola Net Office, spol. s r. o
NÁZEV ŠKOLY: Střední odborná škola Net Office, spol. s r. o
Dávkové soubory Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Kurz algoritmizace a programování v jazyce C
Operační systémy 9. Spolupráce mezi procesy
Příkazy cyklu (1) Umožňují vícekrát (nebo ani jednou) pro-vést určitý příkaz Jazyk C rozlišuje příkaz cyklu: s podmínkou na začátku: obecný tvar: while.
NÁZEV ŠKOLY: Střední odborná škola Net Office, spol. s r. o
C# přehled vlastností.
Cyklus for (1) Obecný tvar: for (výraz1; výraz2; výraz3) příkaz
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně
Transkript prezentace:

České vysoké učení technické Fakulta elektrotechnická S oubory Jazyk JAVA A0B36PRI - PROGRAMOVÁN Í v 1.01

A0B36PRI - Algoritmy I 10 Soubory Soubor je množina údajů uložená ve vnější paměti počítače, obvykle na disku Pro soubor jsou typické tyto operace: otevření souboru, čtení údaje, zápis údaje, uzavření souboru Přístup k údajům (čtení nebo zápis) může být: sekvenční nebo libovolný (adresovatelný) Soubory se sekvenčním přístupem umožňují pouze postupné (sekvenční) čtení nebo zápis údajů Soubory s libovolným přístupem umožňují adresovatelné čtení nebo zápis údaje (podobně jako pole) Způsob přístupu k údajům v souboru není zakódován v souboru, ale je dán programem Zde se budeme zabývat sekvenčními soubory, pro zájemce i adresovatelnými

A0B36PRI - Algoritmy I 10 Typy souborů Podle způsobu kódování informace v souboru známe: Soubory textové Soubory binární Textový soubor je posloupnost znaků členěná na řádky každý znak je reprezentován jedním bytem členění na řádky je závislé na platformě a obvykle je dáno jedním nebo dvěma řídicími znaky (CR, CR LF, 0x0d 0x0c, “\r\n”) Textový soubor je čitelný textovým editorem Binární soubor je posloupnost byteů a informace je kódována vnitřním kódem počítače. Do binárního souboru mohou být zapsány: byte, jednoduché proměnné, pole, data celých objektů, … Důležité: Informace o typu souboru (textový, binární) ani o způsobu kódování informace není v souboru obsažena. Správnou interpretaci přečteného souboru musí zajistit uživatelský program

A0B36PRI - Algoritmy I 10 Práce se souborem Soubor je v běžném stavu chráněn proti změnám dat v souboru (je uzavřen) Před vlastní manipulací s daty v souboru (čtení/zápis) musíme soubor otevřít Při práci s daty v souboru jsou typické tyto operace: 1)otevření souboru, 2)čtení nebo zápis údajů, 3)uzavření souboru. Přístup k údajům v souboru (čtení nebo zápis) může být: postupný (sekvenční) přímý (nahodilý) Soubory se sekvenčním přístupem (sekvenční soubory) umožňují pouze postupné (sekvenční) čtení/zápis údajů Soubory s přímým přístupem umožňují nahodilé čtení/zápis údaje Důležité: způsob přístupu k údajům v souboru není zakódován v souboru, ale je dán programem a technickou podporou

A0B36PRI „PROGRAMOVÁNÍ“ 085 Postupný (sekvenční) přístup k datům v souboru Otevření souboru pro čtení nastaví souborové ukazovátko na začátek souboru Příkazem pro čtení souboru se přečte položka na kterou ukazuje souborové ukazovátko a to se pak automaticky posune na další položku Sekvenční čtení může probíhat až do dosažení konce souboru Otevři soubor Čti položku ….. Čti položku Uzavři soubor data0data1data2……dataN data0data1data2……dataN data0data1data2……dataN ……….

A0B36PRI „PROGRAMOVÁNÍ“ 086 Postupný (sekvenční) přístup k datům v souboru Otevření souboru pro zápis nastaví souborové ukazovátko na začátek souboru Příkazem pro zápis se zapíše položka a souborové ukazovátko se pak automaticky posune na další prázdné místo Sekvenční zápis může probíhat až do „vyčerpání kapacity media“ Otevři soubor Zapiš položku Zapiši položku ….. Zapiš položku Uzavři soubor data0 data1 data0data1data2…dataN ……….

A0B36PRI - Algoritmy I 10 Přenos informace – dvě vrstvy Přenos informace z/do souboru je rozdělen do vrstev Disk Posloupnost bajtů Posloupnost datových typů Program Disk Posloupnost bajtů Posloupnost datových typů Program Čtení ze souboruZápis do souboru

A0B36PRI - Algoritmy I 10 Soubory a proudy Java rozlišuje soubory (file) a proudy (stream) soubory je množina údajů uložená ve vnější paměti počítače proudy jsou nástroje k přenosu informací např. z/do souboru, ale také do/ze sítě, paměti, jiného programu, atd. informace může mít tvar znaků, bajtů, skupin bajtů (obrázky…), objektů,.. přenos informace se děje dvoj/třívrstevně v proudech (streams): 1.otevření přenosového proudu pro bajty či znaky 2.otevření přenosového proudu pro datové typy Javy 3.filtrace dat podle požadavků – bufferování, řádkování, … Proud bajtu či znaků Proud datových typů Filtrace

A0B36PRI - Algoritmy I Soubor jako posloupnost bytů V jazyku Java slouží pro práci se soubory třídy definované v balíku java.io Soubor jako posloupnost bytů reprezentují třídy: FileInputStream vstupní soubor (bude se z něj číst) FileOutputStream výstupní soubor (bude se do něj zapisovat) Příklad: kopie souboru import java.io.*; public class Kopie1 { public static void main(String[] args) throws IOException { FileInputStream in = new FileInputStream("vstup.txt"); FileOutputStream out = new FileOutputStream("vystup.txt"); int b = in.read(); while (b!=-1) { out.write(b); b = in.read(); } out.close(); in.close(); } } // * throws IOException – výjimka, vysvětlíme později Proud bajtu či znaků Vstupní soubor Výstupní soubor

A0B36PRI - Algoritmy I 10 Soubor jako posloupnost bytů Komentář k příkazům ► FileInputStream in = new FileInputStream("vstup.txt"); vytvořený objekt in reprezentuje vstupní soubor uložený na disku v aktuálním adresáři pod názvem vstup.txt; pokud takový soubor neexistuje, nastane chyba ► FileOutputStream out=new FileOutputStream("vystup.txt"); vytvořený objekt out reprezentuje výstupní soubor, který bude uložen do aktuálního adresáře pod názvem vystup.txt; pokud by soubor nebylo možné vytvořit, nastane chyba Metody: –► b = in.read(); ze souboru in se přečte jeden byte (číslo v rozsahu ) a uloží do b; není-li v souboru žádný nepřečtený byte, výsledkem metody je –1 –► out.write(b); do souboru out se zapíše jeden byte s hodnotou b –► out.close(); –► in.close(); uzavření souborů in a out

A0B36PRI - Algoritmy I Soubor jako posloupnost primitivních typů Příklad: program, který vytvoří soubor obsahující 100 náhodných čísel typu double a pak soubor přečte a vypíše součet čísel public class Cisla { public static void main(String[] args)throws Exception { DataOutputStream out = new DataOutputStream( new FileOutputStream("temp.bin")); for (int i=0; i<100; i++) out.writeDouble(Math.random()); out.close(); DataInputStream in = new DataInputStream( new FileInputStream("temp.bin")); double soucet = 0; while (in.available()>0) soucet = soucet + in.readDouble(); System.out.print(soucet); }} Proud bajtu či znaků Proud datových typů Vstupní soubor Výstupní soubor Zavření souboru

A0B36PRI - Algoritmy I Soubor primitivních typů a objektů Soubor obsahující jak primitivní typy tak objekty reprezentují třídy ObjectOutputStream a ObjectInputStream Příklad: program, který vytvoří soubor obsahující dvě hodnoty typu int a dva řetězce, a pak soubor přečte a vypíše public class CislaRetezce { public static void main(String[] args) throws Exception { ObjectOutputStream out = new ObjectOutputStream( new FileOutputStream("temp.bin")); out.writeInt(1); out.writeInt(2); out.writeObject("prvni retez"); out.writeObject("druhy retez"); out.close(); ObjectInputStream in = new ObjectInputStream( new FileInputStream("temp.bin")); System.out.print(in.readInt()+" "+in.readInt()); String s1 = (String)in.readObject(); String s2 = (String)in.readObject(); System.out.print (s1+" "+s2); } } Proud datových typů Proud bajtu či znaků Vstupní soubor Výstupní soubor Zavření souboru

A0B36PRI - Algoritmy I 10 Soubor primitivních typů a objektů, poznámka Uvedenými metodami lze zapisovat a číst pouze tzv. serializovatelné objekty (patří mezi ně implicitně např. řetězce a pole primitivních typů), jinak je třeba „serializovat“ (implementovat rozhraní Serializable ! )

A0B36PRI - Algoritmy I Ukládání objektů do souboru class ProObjekt implements Serializable { int i; String jmeno; int telefon; boolean pohlavi; double vaha; public ProObjekt(int j) { i = j; jmeno = "JMENO-" + j; telefon = j; pohlavi = i%2==0; vaha = 25 - i; } public String toString() { return (i+"\t"+ jmeno+"\t"+ telefon+"\t"+ pohlavi+"\t"+ vaha);} Datové složky Konstruktor Jak zobrazit objekt

A0B36PRI - Algoritmy I 10 Ukládání objektů do souboru public static void main(String[] args) throws IOException, ClassNotFoundException { FileOutputStream fwJm = new FileOutputStream("objekty.bin"); ObjectOutputStream fw = new ObjectOutputStream(fwJm); ProObjekt[] poleObjektu = new ProObjekt[3]; for (int i = 0; i < poleObjektu.length; i++) { poleObjektu[i] = new ProObjekt(i); } System.out.println("Ulozeni"); for (int i = 0; i < poleObjektu.length; i++) { System.out.println(poleObjektu[i]); } for (int i = 0; i < poleObjektu.length; i++) { fw.writeObject(poleObjektu[i]); } fwJm.close(); for (int i = 0; i < poleObjektu.length; i++) { poleObjektu[i] = null;} Výstupní soubor Zavření souboru

A0B36PRI - Algoritmy I 10 Ukládání objektů do souboru FileInputStream frJm = new FileInputStream("objekty.bin"); ObjectInputStream fr = new ObjectInputStream(frJm); for (int i = 0; i < poleObjektu.length; i++) { poleObjektu[i] = (ProObjekt) fr.readObject(); } fwJm.close(); System.out.println("Cteni"); for (int i = 0; i < poleObjektu.length; i++) { System.out.println(poleObjektu[i]); } } } Ulozeni 0JMENO-0111true25.0 1JMENO-1112false24.0 2JMENO-2113true23.0 Cteni 0JMENO-0111true25.0 1JMENO-1112false24.0 2JMENO-2113true23.0 Vstupní soubor

A0B36PRI - Algoritmy I 10 Třídy pro práce se soubory v Javě Třída(viz knihovna java.io.*)Použití FileAdresáře a vlastnosti souborů Binární soubory, postupný přístup FileaOutputStream Zápis bajtů FileInputStream Čtení bajtů DataOutputStream Zápis jednoduchých typů DataInputStream Čtení jednoduchých typů ObjectOutputStreamZápis dat objektů ObjectInputStreamČtení dat objektů Textové soubory, sekvenční přístup FileWriterZápis do textového souboru FileReaderČtení textového souboru BufferedReaderČtení textového souboru Binární soubory, přímý (nahodilý) přístup RandomAccessFile Při práci se souborem se nepoužívá jeho fyzické jméno (tj. jméno které zobrazuje souborový manažer – např. “Průzkumník”. Fyzickému jménu se přiřadí jméno (objekt) logické a s tím se dále pracuje viz třída File. Přehled

A0B36PRI - Algoritmy I 10 Výjimky (Exceptions) Při operacích se soubory (i při jiných akcích) mohou nastat chyby, které program sám neumí zvládnout pokud nemá předem připravené řešení (alternativu) programátorem. Těmto chybám se říká „Běhové chyby“ (Run-time errors) a při překladu programu je nelze odhalit (nejsou to syntaktické chyby) ani předem stanovit zda vzniknou. Příkladem takové chyby je pokus o čtení z neexistujícího souboru nebo pokus o zápis na zaplněný disk. Chyba nemusí znamenat ukončení programu – chybu lze ošetřit a program může pokračovat dál. K ošetření chyb v Javě je určen mechanismus výjimek (exceptions) Java ošetření výjimek vynucuje (je to bezpečnostní vlastnost), bez zápisu v programu, jak se bude výjimka řešit, nelze program v Javě přeložit. Pro zájemce

A0B36PRI - Algoritmy I 10 Výjimky (Exceptions) Princip řešení výjimek v jazyku Java: metoda či konstruktor může skončit standardně (tj.bez chyby) nebo nestandardně tzv. vyhozením výjimky určitého typu v případě, že nastala chyba. Výjimka je objekt. pokud příkaz skončil vyhozením výjimky, další příkazy se neprovedou a řízení se předá konstrukci ošetřující výjimku daného typu (s touto konstrukcí se seznámíme později) pokud taková konstrukce v těle metody či konstruktoru není, skončí nestandardně a výjimka se šíří na nadřazenou úroveň není-li výjimka ošetřena ani ve funkci main(), vypíše se a program skončí pro rozlišení různých typů výjimek je v jazyku Java zavedena řada knihovních tříd, výjimky jsou instancemi (objekty) těchto tříd Pro zájemce

A0B36PRI - Algoritmy I Výjimky Při operacích se soubory (ale i při jiných operacích) mohou nastat chyby Chyba (resp. „výjimečný stav“) při provádění programu v jazyku Java nemusí znamenat ukončení programu – chybu lze ošetřit a pokračovat dál K ošetření chyb slouží mechanismus výjimek ( Exceptions ) Princip výjimek v jazyku Java: libovolná metoda (konstruktor, funkce) může skončit standardně (proběhla-li operace bez chyby) nebo nestandardně „vyhozením“ (vyvoláním) výjimky určitého typu (v případě, že nastala chyba či „chyba“) pokud příkaz skončil „vyhozením“ výjimky, další příkazy se neprovedou a řízení se předá konstrukci ošetřující výjimku daného typu (s touto konstrukcí se seznámíme později) pokud taková konstrukce v těle funkce (metody, konstruktoru) není, skončí funkce nestandardně a výjimka se šíří na dynamicky nadřazenou úroveň není-li výjimka ošetřena ani ve funkci main, vypíše se a program skončí pro rozlišení různých typů výjimek je v jazyku Java zavedena řada knihovních tříd, výjimky jsou instancemi těchto tříd! Pro zájemce

A0B36PRI - Algoritmy I Výjimky – vznik nestandardní situace metoda auvajs !!!! Pro zájemce

A0B36PRI - Algoritmy I Výjimky – ideální ošetření metoda ošetření výjimky Pro zájemce

A0B36PRI - Algoritmy I 10 Výjimky – vyhození, ošetření Program Program kde může dojít k výjimce Program metoda Vyhození výjimky Program Program kde může dojít k výjimce Program metoda Ošetření výjimky Pro zájemce

A0B36PRI - Algoritmy I 10 Chceme-li ošetřit výjimku, která může vzniknout při provádění určité operace, je třeba operaci vložit do bloku try, ke kterému je připojen blok (klauzule) catch ošetřující (zachytávající) výjimky daného typu Příklad: ošetření překročení mezí pole class Vyjimka { void volana(int[] pole) { try { int i = 10; pole[i] = 0; } catch (ArrayIndexOutOfBoundsException io) { System.out.println("Ignoruji prekroceni..."); } System.out.print(" v metode....\n"); } public static void main(String[] args) { int[] pole={1,2,3}; new Vyjimka().volana(pole); System.out.print("a konec"); } } v metode.... a konec Podezřelé místo Ošetření Ošetření výjimek Ignoruji prekroceni... v metode.... a konec

Další informace k této přednášce hledejte např. v: Herout, P.: Učebnice jazyka Java, Kopp, Č.Budějovice, 2010, str.301 – 223,

České vysoké učení technické Fakulta elektrotechnická S oubory Jazyk JAVA Konec A0B36PRI - PROGRAMOVÁN Í