Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

1 Počítače a programování 1 13.přednáška. 2 Obsah přednášky Vstupy a výstupy – 1.část.

Podobné prezentace


Prezentace na téma: "1 Počítače a programování 1 13.přednáška. 2 Obsah přednášky Vstupy a výstupy – 1.část."— Transkript prezentace:

1 1 Počítače a programování 1 13.přednáška

2 2 Obsah přednášky Vstupy a výstupy – 1.část

3 3 I/O Úvod I/O = Input/Output =Vstup/Výstup Vstup do programu a výstup z programu Vstupem může být klávesnice nebo soubor Výstupem může obrazovka (display) nebo soubor Výhody souborů I/O Trvalá kopie Výstup jednoho programu může být vstupem jiného programu Vstup může být automatizován (lepší než manuální vstup)

4 4 I/O Úvod Vytvoření dobrého vstupně-výstupního systému neboli obecně systému přenosu dat – jedna z nejtěžších úloh autora programovacího jazyka Systém přenosu dat zahrnuje: Zdroje a nosiče dat (soubory, terminál serveru nebo síťové spojení) Různé režimy možné komunikace (sekvenční, přímá, s vyrovnávací pamětí, binární, znaková, řádková, po slovech, atd.)

5 5 I/O Úvod Jazyk Java: Vytvoření mnoha knihoven Oproti původní verzi Javy bajtově zaměřená knihovna I/O byla nahrazena znakově orientovanými třídami, založenými na kódování Unicode

6 6 Datové proudy Streams Proud - Stream: objekt, který data doručí k jejich místu určení (obrazovka, soubor, apod.) nebo dodá ze zdroje (klávesnice, soubor, apod.) Ve skutečnosti buffer mezi zdrojovými daty a jejich místem určení

7 7 Datové proudy Streams Input stream: stream, který zajišťuje vstup do programu Output stream: a stream, který přijímá výstup z programu System.out je výstupní stream MojeIn je vstupní stream Stream spojuje program s I/O objekty System.out spojuje program s obrazovkou MojeIn spojuje program s klávesnicí

8 8 Binární Versus Textové Soubory Všechna data a programy jsou v konci zapsány ve dvojkové soustavě (nuly a jedničky) bit je jedna dvojková číslice byte je skupina osmi bitů Textové soubory: bity reprezentují zobrazitelné znaky: Jeden byte v případě ASCII, nejčastěji používaného kódu, například, zdrojové soubory v Javě jsou textové soubory Také jakýkoli soubor vytvářený v "textovém editoru"

9 9 Binární Versus Textové Soubory Binární soubory: bity reprezentují ostatní typy zakódovaných informací, jako jsou výkonné instrukce nebo numerická data Tyto soubory jsou snadno srozumitelné pro počítač, ale nesrozumitelné pro člověka Jsou to „netištitelné“ soubory Ve skutečnosti je lze tisknout, ale informace není srozumitelná „tištitelné" znamená „po tisku snadno čitelné pro člověka"

10 10 Java: Textové Versus Binární Soubory Textové soubory jsou srozumitelné Binární soubory jsou více účinné Pro počítače jsou binární soubory snadněji zpracovatelné Binární soubory v Javě jsou přenositelné Mohou být využity na různých počítačích Čtení i zápis binárních souborů je normálně prováděn programem Textové soubory jsou používány pouze pro komunikaci s člověkem

11 11 Java: Textové Versus Binární Soubory Java Binární Soubory Výkonné soubory (vytvořené překladem zdrojových souborů) Obvykle vstupní soubory Obvykle výstupní soubory Java Textové soubory Zdrojové soubory Občas vstupní soubory Občas výstupní soubory

12 12 Textové soubory I/O Důležité třídy pro textové soubory output (výstup do souboru) PrintWriter FileOutputStream Důležité třídy pro textové soubory input (vstup ze souboru): BufferedReader FileReader

13 13 Proudy znaků a proudy bajtů Java na rozdíl od jiných programovacích jazyků neprovádí členění souborů na textové a binární ale na proudy bajtů a proudy znaků Proudy znaků : Reader - pro vstup znaků Writer - pro výstup znaků Proudy bajtů : InputStream - pro vstup bajtů OutputStream - pro výstup bajtů

14 14 Reader poskytuje tři metody pro čtení read() - pro čtení jednoho prvku read(char[] pole) – pro čtení celého pole read(char[] pole, int index, int pocet) – pro čtení částí pole (index prvního prvku a počet prvků) Vracejí hodnotu -1 pokud pokud bylo dosaženo konce proudu Writer poskytuje tři metody pro čtení write() - pro zápis jednoho prvku write(char[] pole) – pro zápis celého pole write(char[] pole, int index, int pocet) – pro zápis částí pole ( index prvního prvku a počet prvků )

15 15 InputStream poskytuje tři metody pro čtení read() - pro čtení jednoho prvku read(byte[] pole) – pro čtení celého pole read(byte[] pole, int index, int pocet) – pro čtení částí pole (index prvního prvku a počet prvků) Vracejí hodnotu -1 pokud pokud bylo dosaženo konce proudu OutputStream poskytuje tři metody pro čtení write() - pro zápis jednoho prvku write(byte[] pole) – pro zápis celého pole write(byte[] pole, int index, int pocet) – pro zápis částí pole ( index prvního prvku a počet prvků )

16 16 Základní kroky při práci se souborem: 1. Vytvořit „File descriptor“, který je využíván programem v Javě a který je jakýmsi spojením mezi souborem na disku a programem ( v Pascalu obdoba příkazu assign) 2. Otevřít soubor ( při otevírání souboru pro čtení nejprve otestovat zda soubor existuje) 3. Pracovat se souborem – tj. číst popř. zapisovat data 4. Uzavřít soubor – při neuzavření hrozí ztráta dat

17 17 Vytvoření „File descriptoru“ – příkazem File fp= new File (”a.txt”); Test existence (používá se pro soubory ze kterých se bude číst) souboru: metoda fp.exists() vrací true pokud soubor existuje Otevření souboru FileReader fr = new FileReader(fp); – otevírá znakový soubor pro čtení FileWriter fw = new FileWriter(fp); – otevírá znakový soubor pro zápis FileWriter fr = new FileWriter(fp, true); – otevírá znakový soubor pro doplňování FileInputStream fr = new FileInputStream – otevírá bytový soubor pro čtení FileOuputStream fw = new FileOutputStream – otevírá bytový soubor pro zápis

18 18 Práce se souborem fr.read(…) – čte bajty/znaky ze souboru fr.write(…) – zapisuje bajty/znaky do souboru pro FileReader : skip(long pocet) - při čtení přeskočí zadaný počet znaků boolean markSupported() – testuje zda jsou podporovány metody reset() – návrat na začátek souboru mark(long platnost) – označuje aktuální pozici jako výchozí pro reset(), platnost určuje kolik znaků můžeme přečíst než platnost ztratí význam

19 19 pro FileWriter fp.flush() – okamžité zapsání bufferovaných dat na disk Uzavření souboru fp.close() Př. Práce se soubory import java.io.*; public class Presuny { public static void main(String[] args) throws IOException { File frJm = new File("a.txt"); FileReader fr = new FileReader(frJm); FileWriter fw = new FileWriter("b.txt"); long delka = frJm.length(); int c; // prvni kopirovani od zacatku

20 20 for (long i = 0; i < delka; i++) { c = fr.read(); fw.write(c); } fr.close(); / fr.close(); // poněkud nepřehledný přesun na zač. souboru fr = new FileReader(frJm); // fr.reset(); není tímto proudem podporováno fw.close(); fw = new FileWriter("b.txt", true); // druhe kopirovani z poloviny fr.skip(delka / 2); while((c = fr.read()) != -1) fw.write(c); fr.close(); fw.close(); }

21 21


Stáhnout ppt "1 Počítače a programování 1 13.přednáška. 2 Obsah přednášky Vstupy a výstupy – 1.část."

Podobné prezentace


Reklamy Google