Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky...

39
Úvod do programovacích jazyk˚ u (Java), 9/12 Balí ˇ cky (packages) Výjimky Proudy (Stream) Parametry pˇ ríkazové ˇ rádky Úvod do programovacích jazyk˚ u (Java) Michal Krátký Katedra informatiky VŠB–Technická univerzita Ostrava Úvod do programovacích jazyk˚ u (Java), 2007/2008 c 2006–2008 Michal Krátký Úvod do programovacích jazyk˚ u (Java) 1/39

Transcript of Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky...

Page 1: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Úvod do programovacích jazyku (Java)

Michal Krátký

Katedra informatikyVŠB–Technická univerzita Ostrava

Úvod do programovacích jazyku (Java), 2007/2008

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 1/39

Page 2: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Balícky (Packages) 1/2

Balícky jsou skupiny tríd a rozhraní.Umožnují vyhnout se konfliktum ve jménech tríd.Balícek muže obsahovat trídy, rozhraní a další balícky(pod-balícky).Každý balícek má jméno. Celé jméno balícku obsahujeteckami oddelený seznam nad-balícku až k danémubalícku.Napr.: java.lang, com.sun.security,drawing.figures.

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 2/39

Page 3: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Balícky 2/2

Balícek ke kterému trída prísluší je specifikován nazacátku souboru, napr.:

package drawing . f i g u r e s ;

class Line extends Figure {. . .}

Trída náleží do balícku drawing.figures.Pokud na zacátku souboru nespecifikujeme žádný balícek,pak trída náleží ke speciálnímu nepojmenovanémubalícku.

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 3/39

Page 4: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Normativní jména tríd a rozhraní

Každá trída nebo rozhraní má normativní jméno (canonicname) obsahující balícek ke kterému náleží a jméno trídynebo rozhraní. Napr. drawing.figures.Line.Pro dve ruzné trídy nebo rozhraní mužeme použít stejnéjméno pokud náleží k ruzným balíckum (a mají tedy ruznánormativní jména).Napr. v balícku project.graphics definujeme jinoutrídu Line s normativním jménemproject.graphics.Line.Vždy mužeme použít normativní jméno trídy neborozhraní, když se odkazujeme na trídu nebo rozhraní.Napr. drawing.figures.Line line = newdrawing.figures.Line();

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 4/39

Page 5: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Verejné trídy a rozhraní

Pouze trídy a rozhraní deklarované jako public jsouprístupné z jiných balícku.Napr. trída drawing.figures.Line:

package drawing . f i g u r e s ;public class Line extends Figure { . . .

je prístupná ve všech balíccích.Pokud chceme, aby byla trída prístupná pouze ve trídách arozhraních balícku package drawing.figures,deklarujeme:

package drawing . f i g u r e s ;class Line extends Figure { . . .

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 5/39

Page 6: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Hierarchie balícku

Jména balícku korespondují s adresári v adresárovéstrukture.Napr. trída drawing.figures.Line je uložena v souboru:drawing/figures/Line.java (Unix) resp.drawing\figures\Line.java (MS Windows).Soubory obsahující trídy z nepojmenovaného balícku jsouuloženy v aktuálním adresári.

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 6/39

Page 7: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Deklarace import

Pokud se odkazujeme na trídu nebo rozhraní z jinéhobalícku, mužeme použít její normativní jméno.Napr. drawing.figures.Line line = newdrawing.figures.Line();

Mužeme ovšem použít deklaraci import, která námumožnuje odkazovat se na trídy a rozhraní z tohoto balíckupouze jednoduchým jménem.Dva typy deklarace import:

Jednoduchá - importujeme pouze jednu trídu neborozhraní. Napr.: import drawing.figures.Line;Složená deklarace (on demand) – importujeme všechnyverejné trídy a rozhraní z balícku.Napr.: import drawing.figures.*;

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 7/39

Page 8: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Java API

API – Application Programming Interface.Množina tríd, kterou má programátor k dispozici, soucásti:

java.io.* – vstup/výstup....

Ke každé tríde nalezneme v dokumentaci definovanéatributy a metody.

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 8/39

Page 9: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Výjimky (Exceptions)

Pro ošetrení chyb poskytuje Java mechanismus zvaný výjimky(Exceptions):

Když nastane v programu chyba, program vygenerujeudálost – výjimku.Beh programu je prerušen a runtime hledá kód ošetrujícípríslušný typ chyby – exception handler.Poznámka: objekt nesoucí informaci o události je takénazýván výjimka.

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 9/39

Page 10: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Výjimky, príklad

public s t a t i c void main ( S t r i n g [ ] args ) {t ry {

i n t pole [ ] = new i n t [ 3 ] ;. . .i n t a = pole [ 5 ] ;

}catch ( ArrayIndexOutOfBoundsException e ) {

System . e r r . p r i n t l n ( " Chyba " ) ;}

}

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 10/39

Page 11: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Výjimky

Když nastane výjimka:

Je vytvoren objekt výjimky, který obsahuje informace ovýjimce (typ, stav programu, . . . ).Beh programu je prerušen.Runtime hledá kód ošetrující chybu.Kód zachycující výjimku se nazývá exception handler(catch).Výber handleru závisí na typu objektu výjimky.Zachytávání výjimek se skládá ze trí bloku: try, catch afinally

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 11/39

Page 12: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Výjimky

Syntaxe:

t ry {. . .

} catch ( . . . ) {. . .

} catch ( . . . ) {. . .

} f i n a l l y {. . .

}

Za try blokem musí následovat nejméne jeden blok catchnebo finally.

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 12/39

Page 13: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Výjimky, blok try

Syntaxe:

t ry {. . . / / p r i kazy}

Blok try definuje platnost handleru.Pokud výjimka nastane v bloku try, výjimka je ošetrenapríslušným handlerem asociovaným s tímto blokem.

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 13/39

Page 14: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Výjimky, blok catch

Syntaxe:

catch ( SomeThrowableObject variableName ) {. . . / / p r i kazy}

Za try muže nasledovat nekolik bloku catch, ale nejvýšejeden blok finally.Promenná variableName je jméno výjimky na které semužeme v kódu odkazovat.Platnost této promenné je v bloku try.Promenná muže být použita jako jiné lokální promenné,napr. variableName.getMessage();

Konvence: Casto tuto promennou pojmenováváme e.c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 14/39

Page 15: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Výjimky, blok finally

Blok finally poskytuje mechanismus umožnujícívykonání kódu bez ohledu na to zda v bloku try nastalanebo nenastala výjimka.Príkazy v bloku finally jsou vykonány pokud:

Blok try je standardne ukoncen.V bloku try nastane výjimka, která je ošetrena jedním zhandleru.V bloku try nastane výjimka, která není ošetrena žádnýmhandlerem.

t ry {. . . / / o t e v r i soubor a zapis do ne j

} f i n a l l y {i f ( f i l e ! = nul l ) f i l e . c lose ( ) ;

}

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 15/39

Page 16: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Výjimky, metody

Metody nemusí ošetrovat všechny výjimky, mohou vyvolatvýjimku k volané metode.Pokud výjimka typu T muže být vyvolána v metode ametoda neošetruje výjimku typu T, pak musímespecifikovat, že metoda muže vyvolat výjimku typu T.K tomuto úcelu použijeme klícové slovo throw v hlaviccemetody:

public void readF i l e ( S t r i n g f i lename )throws IOExcept ion

{. . .throw new IOExcept ion ( ) ; / / v y t v o r e n i vy j imky

}

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 16/39

Page 17: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Výjimky, hierarchie výjimek

Pomocí dedicnosti mužeme vytváret vlastní výjimky(predekThrowable), výhody:

Seskupování chybových typu.Zjemnování chybových stavu.

public class StackExcept ion extends Except ion {public StackExcept ion ( S t r i n g message ) {

super ( message ) ;}

}public class EmptyStackException extends

StackExcept ion {public EmptyStackException ( ) {

super ( " Zasobnik j e prazdny . " ) ;}

} c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 17/39

Page 18: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Proudy (Stream)

Program casto potrebuje císt nebo zapsat data z/doexterních zdroju.Data muže obsahovat soubor na disku, soubor na síti, blokpameti atd.Proudy reprezentují abstrakci umožnující sekvencní ctení azápis dat.Pri použití proudu mužeme pristupovat k datum bez ohleduna to z jakého zdroje je cteme popr. zapisujeme.

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 18/39

Page 19: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Proudy

Rozlišujeme dva typy proudu:vstupní proudy – pro ctení dat,výstupní proudy – pro zápis dat.

Pro ctení a zápis dat používáme podobná schémata:

Otevrení proudu.Dokud jsou v proudu data, cti. / Dokud jsou data, zapisuj.Uzavrení proudu.

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 19/39

Page 20: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Proudy

Balík java.io obsahuje kolekci tríd pro práci s proudy.Trídy rozdelujeme do dvou hierarchií:

Binární proudy – pracují s proudy binárních dat. Podtrídytríd:

InputStream - vstupní proud,OutputStream - výstupní proud.

Znakové proudy – pracují s proudy znaku. Podtrídy tríd:Reader - vstupní proud,Writer - výstupní proud.

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 20/39

Page 21: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Proudy, metody

InputStream:

i n t read ( )i n t read ( byte [ ] b )i n t read ( byte [ ] b , i n t o f f , i n t l en )

OutputStream:

void w r i t e ( i n t b )void w r i t e ( byte [ ] b )void w r i t e ( byte [ ] b , i n t o f f , i n t l en )

Reader:

i n t read ( )i n t read ( char [ ] cbuf )i n t read ( char [ ] cbuf , i n t o f f , i n t l en )

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 21/39

Page 22: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Proudy, metody

Writer:

void w r i t e ( i n t c )void w r i t e ( char [ ] cbuf )void w r i t e ( char [ ] cbuf , i n t o f f , i n t l en )

Další metody: Všechny trídy obsahují metodu close().Tato metoda je bud’ volána explicitne nebo implicitne prirušení objektu garbage collectorem.

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 22/39

Page 23: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Proudy, metody

Trídu InputStream a Reader obsahují metody:

long sk ip ( long n ) / / preskoceni n bytuboolean markSupported ( )/ / oznaceni ak tua ln iho bytuvoid mark ( i n t readAheadLimit )void rese t ( )

Trídy OutputStream a Writer obsahují metodu:

void f l u s h ( ) / / vyprazdneni buferu

Vetšina metod pracující s proudy vyhazuje výjimkujava.io.IOException nebo nekterou z jejich podtríd.

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 23/39

Page 24: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Souborové proudy 1/3

Souborové proudy ctou nebo zapisují do souboru nasouborovém systému.

FileInputStreamFileOutputStreamFileReaderFileWriter

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 24/39

Page 25: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Souborové proudy 2/3

Príklad:

Reader i n = new Fi leReader ( " i npu t . t x t " ) ;Wr i t e r out = new F i l e W r i t e r ( " output . t x t " ) ;i n t c ;while ( ( c = i n . read ( ) ) > = 0 ) {

out . w r i t e ( c ) ;}i n . c lose ( ) ;out . c lose ( ) ;

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 25/39

Page 26: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Souborové proudy 3/3

Ctení data byt po bytu není príliš efektivní. Snažíme se tedycíst data po vetších blocích.

InputStream i n = new Fi le InputSt ream ( " i npu t . t x t " ) ;OutputStream out =

new Fi leOutputStream ( " output . t x t " ) ;f i n a l i n t BUFFER_LENGTH = 8192 ;byte [ ] buf = new byte [BUF_LEN ] ;i n t l ;while ( ( l = i n . read ( buf , 0 , BUF_LEN) ) > = 0 ) {

out . w r i t e ( buf , 0 , l ) ;}i n . c lose ( ) ;out . c lose ( ) ;

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 26/39

Page 27: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Trída File 1/2

Instance trídy java.io.File reprezentuje soubor nasouborovém systému. Pokud vytvoríme instanci trídy File pronejaký soubor, mužeme zjišt’ovat následující informace:

Plné jméno souboru.Jméno rodicovského adresáre.Zda se jedná o soubor nebo adresár.Zda je zadán absolutne nebo relativne.Zda existuje.Velikost souboru.Prístupová práva (ctení, zápis).Cas modifikace, zda je skrytý apod.

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 27/39

Page 28: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Trída File 2/2

Instanci trídy java.io.File mužeme použít pro:

Vytvárení souboru.Rušení souboru.Prejmenování souboru.Vylistování adresáre.Vytvorení podadresáre.Nastavení casu modifikace.Vytvorení pomocných souboru (temporary files).

S t r i n g f i lename = " t e s t . t x t " ;F i l e f = new F i l e ( f i lename ) ;boolean ok = f . de le te ( ) ;System . out . p r i n t l n ( ok ? "O.K . " : " Not de le ted " ) ;

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 28/39

Page 29: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Standardní vstup a výstup

Ve tríde System jsou definovány tyto trídní konstantnípromenné:

in - standardní vstup (InputStream), implicitneklávesnice.out - standardní výstup (PrintStream), implicitneobrazovka.err - standardní chybový výstup (PrintStream).

Všechny tyto proudy jsou implicitne otevrené a nemohou býtuzavreny.Všechny tyto proudy je možné presmerovat.

$ java ClassName < inpu t . t x t > output . t x t$ java ClassName < inpu t . t x t | l ess

Ukoncení vstupu: ^Z (Windows), ^D (Linux).c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 29/39

Page 30: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Další trídy

Ctení a zápis primitivních datových typu –DataInputStream, DataOutputStream.Náhodný prístup k datum – RandomAccessFile.(PrintStream).BufferedInputStream, BufferedOutputStream.

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 30/39

Page 31: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Príklad, DoubleArray.java 1/4

package s t reamtes t ;

public class DoubleArray{

double mArray [ ] ;

public DoubleArray ( i n t capac i t y ){

mArray = new double [ capac i t y ] ;}

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 31/39

Page 32: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Príklad, DoubleArray.java 2/4

public void setValue ( i n t index , double value ){

mArray [ index ] = value ;}

public double getValue ( i n t index ){

return mArray [ index ] ;}

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 32/39

Page 33: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Príklad, DoubleArray.java 3/4

public void p r i n t ( ){

for ( i n t i = 0 ; i < mArray . leng th ; i ++){

System . out . p r i n t ( mArray [ i ] + " " ) ;}System . out . p r i n t ( " \ n " ) ;

}

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 33/39

Page 34: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Príklad, DoubleArray.java 4/4

public void s o r t ( ){

for ( i n t i = 0 ; i < mArray . leng th ; i ++){

for ( i n t j = 0 ; j < mArray . length −1 ; j ++){

i f ( mArray [ j ] > mArray [ j +1 ] ){

double tmp = mArray [ j ] ;mArray [ j ] = mArray [ j + 1 ] ;mArray [ j + 1 ] = tmp ;

}}

}}

}c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 34/39

Page 35: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Príklad, StreamApp.java 1/4

package s t reamtes t ;

public class StreamApp{

DoubleArray mDoubleArray ;

public StreamApp ( ) {mDoubleArray = new DoubleArray ( 1 0 ) ;

}

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 35/39

Page 36: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Príklad, StreamApp.java 2/4

public s t a t i c void main ( S t r i n g [ ] args ){

new StreamApp ( ) . Run ( ) ;}

public void Run ( ){

read ( ) ;mDoubleArray . p r i n t ( ) ;mDoubleArray . s o r t ( ) ;mDoubleArray . p r i n t ( ) ;

}

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 36/39

Page 37: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Príklad, StreamApp.java 3/4

private void read ( ){

f i n a l i n t l eng th = 1024 ;i n t ar ray [ ] = new i n t [ l eng th ] ;i n t i = 0 ;

t ry{

while ( ( a r ray [ i + + ] = System . i n . read ( ) ) ! = −1 ){ }

}catch ( Except ion e ){ }

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 37/39

Page 38: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Príklad, StreamApp.java 4/4

S t r i n g s t r = " " ;i n t countOfNumber = 0 ;/ / 4 5 6 4 8 1 . . .for ( i n t j = 0 ; j < i ; j + + ) {

i f ( a r ray [ j ] = = ’ ’ | | j == i −1) {double v = Double . parseDouble ( s t r ) ;mDoubleArray . setValue ( countOfNumber ++ , v ) ;s t r = " " ;

}else {

s t r + = ( char ) a r ray [ j ] ;}

}} }

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 38/39

Page 39: Úvod do programovacích jazyku˚ (Java)Úvod do programovacích jazyku˚ (Java), 9/12 Balícky (packages)ˇ Výjimky Proudy (Stream) Parametry pˇríkazové ˇrádky Balícky 2/2ˇ

Úvod do programovacích jazyku (Java), 9/12

Balícky (packages)VýjimkyProudy (Stream)Parametry príkazové rádky

Parametry príkazové rádky

Parametry predávané programu pri spouštení, napr.:

java ca tes t . App 1 9 4 5 6

Parametry jsou prístupné pres pole retezcu predávanémetode main jako parametr.

public s t a t i c void main ( S t r i n g [ ] args ){

. . ./ / args [ 0 ] = 1 , args [ 1 ] = 9 , . . .

c©2006–2008 Michal Krátký Úvod do programovacích jazyku (Java) 39/39