Microsoft PowerPoint - IOSrautai.ppt

Panašūs dokumentai
Java esminės klasės, 1 dalis Išimtys, Įvestis/išvestis

P. Kasparaitis. Praktinė informatika. Skriptų vykdymas ir duomenų valdymas Skriptų vykdymas ir duomenų valdymas Įvadas Skripto failas tai M

Microsoft Word - 15_paskaita.doc

DBVS realizavimas Pagrindiniai DBVS komponentai Duomenų saugojimas diske Paruošė J.Skučas

DB sukūrimas ir užpildymas duomenimis

Realių lėktuvų skrydžių atvaizdavimas pagal turimus radaro duomenis

Masyvas su C++ Užduotys. Išsiaiškinkite kodą (jei reikia pataisykite) ir paleiskite per programą. Ciklo skaitliuko įrašymas į vienmatį masyvą: #includ

Dažniausios IT VBE klaidos

Pagrindiniai algoritmai dirbant su sveikųjų ir realiųjų skaičių masyvų reikšmėmis Sumos skaičiavimo algoritmas Sveikieji skaičiai int Suma (int X[], i

Slide 1

Sistemos specifikacija

PowerPoint Presentation

VERSLO IR VADYBOS TECHNOLOGIJŲ PROGRAMA

EUROPOS KOMISIJA Briuselis, C(2017) 4679 final KOMISIJOS ĮGYVENDINIMO SPRENDIMAS (ES) / dėl bendros sistemos techninių standa

MUITINĖS DEPARTAMENTAS PRIE LIETUVOS RESPUBLIKOS FINANSŲ MINISTERIJOS BENDRO NAUDOTOJŲ VALDYMO SISTEMOS, ATITINKANČIOS EUROPOS KOMISIJOS REIKALAVIMUS,

Slide 1

Tiesioginio-debeto-paslaugos-duomenu-apsikeitimo-formatu-aprasas

Administravimo vadovas SAFTit Pro v3

Logines funkcijos termu generavimo algoritmas pagristas funkciniu modeliu

RR-GSM_IM_LT_110125

Slide 1

Techninė dokumentacija Qlik Sense architektūros apžvalga 2015 m. gruodis qlik.com

skaitiniai metodai 1

ktu kompiuterių katedra Programavimas asembleriu Darius Birvinskas Ignas Martišius Algimantas Venčkauskas

Style Sample for C&N Word Style Sheet

Slide 1

VILNIAUS R. PABERŽĖS ŠV. STANISLAVO KOSTKOS GIMNAZIJOS 2, 4, 6 IR 8 KLASĖS MOKINIŲ MOKYMOSI PASIEKIMŲ VERTINIMO PANAUDOJANT DIAGNOSTINIUS IR STANDARTI

skaitiniai metodai 1

DIGIPASS DP 260 VARTOTOJO INSTRUKCIJA

PS Testavimo ir konfigūravimo valdymas Užduotis nr. 1. Karolis Brazauskas Mindaugas Rekevičius Jonas Riliškis Eugenijus Sabaliauskas

Layout 1

Pardavimų aplikacija (Microsoft Dynamics AX (Axapta) sistemai) Diegimo instrukcija bifree.lt qlik.com

Lietuvos mokslo ir studijų institucijų kompiuterių tinklas LITNET Vilniaus universitetas Mokslininko darbo vietos paslauga Paslaugos naudojimo instruk

EUROPOS KOMISIJA Briuselis, C(2012) 2384 final KOMISIJOS ĮGYVENDINIMO SPRENDIMAS kuriuo priimamas valstybių narių teikiamų Europ

Slide 1

PowerPoint Presentation

skaitiniai metodai 1

VLKK

PowerPoint Presentation

GPAIS vartotojo vadovas savivaldybėms GPAIS VARTOTOJO VADOVAS SAVIVALDYBIŲ PILDOMAI INFORMACIJAI GPAIS TURINYS 1. BENDRI DARBO SU GPAIS PRINCIPAI... 2

Privalomai pasirenkamas istorijos modulis istorija aplink mus I dalis _suredaguotas_

UAB AMEA Business Solutions Praktiniai IT Sprendimai smulkioms ir vidutin ms mon ms Direktor, Jurgita Vitkauskait , K

Microsoft Word - SDH2.doc

MAGENTO 1.9 OMNIVA MODULIO DIEGIMO INSTRUKCIJA

Elektroninio dokumento nuorašas LIETUVOS RESPUBLIKOS ŠVIETIMO IR MOKSLO MINISTRAS ĮSAKYMAS DĖL ŠVIETIMO IR MOKSLO MINISTRO 2011 M. KOVO 16 D. ĮSAKYMO

Priedas Nr.18 PATVIRTINTA Kauno Veršvų gimnazijos direktoriaus 2017 m. liepos.. d. įsakymu Nr. V- KAUNO VERŠVŲ GIMNAZIJA TOLERANCIJOS UGDYMO CENTRO VE

Microsoft Word - Techninis biuletenis.doc

Algoritmø analizës specialieji skyriai

Muzikos duomenų bazės NAXOS Music Library naudojimo vadovas Turinys Kas yra NAXOS Music Library... 2 Kaip pradėti naudotis... 3 Kaip atlikti paiešką..

PATVIRTINTA Kauno sporto mokyklos Startas Direktoriaus 2019 m. balandžio 23 d. įsakymu Nr KAUNO SPORTO MOKYKLOS STARTAS PRIVATUMO POLITIKA Kauno

(Microsoft PowerPoint - Mokom\370j\370 program\370 naudojimas.pptx)

PowerPoint Presentation

TAURAGĖS ŠALTINIO PROGIMNAZIJA Integruota anglų-vokiečių kalbų pamoka Mano šeima, My family-meine Familie Anglų kalbos mokytoja metodininkė Lina Valuc

Techninis aprašymas SONOMETER TM 1100 Ultragarsinis kompaktiškas energijos skaitiklis Aprašymas / taikymas MID tikrinimo sertifikato nr.: DE-10-MI004-

4 skyrius Algoritmai grafuose 4.1. Grafų teorijos uždaviniai Grafai Tegul turime viršūnių aibę V = { v 1,v 2,...,v N } (angl. vertex) ir briaun

Programų sistemų inžinerija Saulius Ragaišis, VU MIF

Pensijų sistemos reforma PRIVATUMO POLITIKA Šios privatumo politikos tikslas. Ši privatumo politika ( Privatumo politika ) nustato asmens duomenų tvar

PRESTASHOP 1.7 OMNIVA MODULIO DIEGIMO INSTRUKCIJA

Algoritmai ir duomenų struktūros (ADS) 7 paskaita Saulius Ragaišis, VU MIF

BUHALTERINĖ APSKAITA Dr. Stasys Peldžius 7 paskaita

Jūsų duomenys, jūsų teisės. Ericsson duomenų tvarkytojo įmonei privalomos duomenų apsaugos taisyklės Įžanga Ericsson veikla pasižymi sąžiningumu, skai

LIETUVOS RESPUBLIKOS AZARTINIŲ LOŠIMŲ ĮSTATYMO NR. IX-325 2, 10, 15, 16, 29 STRAIPSNIŲ PAKEITIMO IR ĮSTATYMO PAPILDYMO 15 1, 16 1 STRAIPSNIAIS ĮSTATYM

Slide 1

PowerPoint Presentation

Projektas PATVIRTINTA Alytaus Sakalėlio pradinės mokyklos direktoriaus įsakymu Nr. V- ALYTAUS SAKALĖLIO PRADINĖS MOKYKLOS ELEKTRONINIO DIENYNO T

Microsoft Word - DV_Rekomendacijos2

TUKE_isakymas_2015.docx

NACIONALINIS KIBERNETINIO SAUGUMO CENTRAS Tel El. p. NACIONALINIS KIBERNETINIO SAUGUMO CENTRAS PRIE KRA

VISŲ TIPŲ IR GAMINTOJŲ MEMBRANINIAI DUJŲ SKAITIKLIAI 1. Skaitiklių savybės. Visų tipų ir gamintojų membraniniai dujų skaitikliai indikuoja vieną rodme

Longse Wi-Fi kameros greito paleidimo instrukcija 1. Jums prireiks 1.1. Longse Wi-Fi kameros 1.2. Vaizdo stebėjimo kameros maitinimo šaltinio 1.3. UTP

ES F ben dri Projekto kodas (Įrašoma automatiškai) 1 PROJEKTO SFMIS DUOMENŲ FORMA FORMAI PRITARTA m. Europos Sąjungos struktūrinės paramos a

REKOMENDACIJA ASMENS DUOMENŲ IR PRIVATUMO APSAUGA NAUDOJANTIS BELAIDŽIAIS TINKLAIS ĮŽANGA Skaitmeniniame pasaulyje mūsų privatumas ir asmens duomenų s

Brochure 4

Valdiklis su vidiniu keturių dažnių GSM/GPRS/3G modemu MCL 5 IP Naudotojo vadovas Versija 2.0 UAB NAVITUS LT Lietuva, 2018

IŠ PRAEITOS PASKAITOS jeigu java serveryje įkėlus projektą rodomas tuščias baltas langas, bent ant kito port'o aplikacija veikia pasiūlymas užkomentuo

PowerPoint Presentation

Microsoft Word - DSEA-3s.doc

CompoundJS Node on rails

IŠDUODAMUOSE I, III, V IR VI TIPO NUMERIO ŽENKLUOSE NAUDOJAMŲ UŽRAŠŲ SUDARYMO EILIŠKUMO TVARKOS

UAB VALENTIS PRIVATUMO POLITIKA Uždaroji akcinė bendrovė Valentis (toliau Valentis arba mes), įgyvendindama 2016 m. balandžio 27 d. Europos Parlamento

Prekybos terminalas yra naujas ir galingas MetaTrader papildinys

LIETUVOS RESPUBLIKOS VYRIAUSIOSIOS RINKIMŲ KOMISIJOS POLITINIŲ PARTIJŲ IR POLITINIŲ KAMPANIJŲ FINANSAVIMO KONTROLĖS SKYRIAUS PAŽYMA DĖL PARTIJOS,,JAUN

Priedas Nr.15 PATVIRTINTA Kauno Veršvų gimnazijos direktoriaus 2018 m..mėn... d. įsakymu Nr. V- KAUNO VERŠVŲ GIMNAZIJA TOLERANCIJOS UGDYMO CENTRO VEIK

LIETUVOS RESPUBLIKOS ŠVIETIMO IR MOKSLO MINISTRO

A. Merkys ASOCIACIJA LANGAS Į ATEITĮ, 2015 m. Elektroninis mokymasis Tikriausiai šiais laikais daugelis esate girdėję apie elektroninį bei nuotolinį m

VALSTYBINĖS KAINŲ IR ENERGETIKOS KONTROLĖS KOMISIJOS

Projektas „Europos kreditų perkėlimo ir kaupimo sistemos (ECTS) nacionalinės koncepcijos parengimas: kreditų harmonizavimas ir mokymosi pasiekimais gr

Elektroninio dokumento nuorašas UKMERGĖS RAJONO SAVIVALDYBĖS ADMINISTRACIJOS DIREKTORIUS ĮSAKYMAS DĖL NACIONALINIO MOKINIŲ PASIEKIMŲ PATIKRINIMO (DIAG

Autorinė sutartis Nr

Prašymo taikyti galutinio vartojimo, laikinojo įvežimo, laikinojo įvežimo perdirbti ir laikinojo išvežimo perdirbti langeliuose įrašomi duomenys: 1. P

tmp714.tmp

Banko_paslaugu_internetu_teikimo_salygos_

Microsoft Word - Isakymo_projektas _patvirtintas_.docx

(Microsoft Word - Pasiruo\360imas EE 10 KD-1)

Ataskaitų rengimo instrukcija Diabeto terapijos valdymo programinė įranga

Data Suma Pirkėjas Pirkimo objektas , , , , ,

AAA.AIEPI.Mokymu_medziaga_MOK_VI_07.Vandens_inventorizacijos_duomenu_tvarkymas.v.0.4

Microsoft Word - Copy of Magistrinis.doc

KAUNO TECHNOLOGIJOS UNIVERSITETAS INFORMATIKOS FAKULTETAS Laura Kovalenkovienė PROGRAMINĖS ĮRANGOS KŪRIMO PROJEKTŲ APIMTIES SKAIČIAVIMO METODŲ TYRIMAS

Transkriptas:

I/O - srautai OP2, ver. 2009-11-25. Paruošė: R.Vaicekauskas

Turinys Srauto abstrakcija Javoje Bazinių klasių ypatybės Specializuoti srautai Srautai-filtrai. Dekoratoriaus šablonas. Objektų srautas. Serializacija. Taikymai, pagalbinės klasės.

Srauto abstrakcija Pagal: (SUN) Java Tutorials: Basic I/O

Java srautas Suprantamas kaip duomenų (baitų, simbolių) seka. Įgalina operuoti srauto skaitymo / rašymo operacijomis nepriklausomai nuo konkretaus įrenginio. Kiekvieną konkretaus tipo srautą atitinka konkrečios Java klasės objektas. java.io pagrindinės srautų klasės. java klasės paruoštos plėtimui.

Srautų tipai Baitų / simbolių srautai Skaitymo / rašymo srautai 4 bazinės klasės: InputStream, OutputStream operuoja baitais (byte tipas) Reader, Writer operuoja simboliais (char tipas), leidžia išvengti simbolių kodavimo / dekodavimo problemų Galima operuoti simboliais virš baitų srauto.

Baitų kopijavimo pavyzdys import java.io.*; public class CopyBytesPP{ public static void main(string[] args) throws IOException { InputStream in = new FileInputStream("orig.txt"); OutputStream out = new FileOutputStream("copy.txt"); for (int c; (c = in. read() )!= -1;) { out. write (c); } in.close(); out.close(); }}

Baitų kopijavimas (2)

public: Bazinė išvedimo klasė class OutputStream (Writer simboliams) Pagrindinė operacija išvesti baitą (simbolį) OutputStream() void close() void flush() void write(byte[] b) void write(byte[] b, int off, int len) abstract void write(int b)

Specializuotos išvedimo klasės įgalina atlikti specializuotas išvestis, parūpina papildomą funkcionalumą ByteArrayOutputStream, FileOutputStream, FilterOutputStream, ObjectOutputStream, PipedOutputStream BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter

Bazinėįvedimo klasė class InputStream (Reader- simboliams) public: void close() abstract int read() int read (byte[] b) int read (byte[] b, int off, int len) <kiti metodai>

Specializuotos įvedimo klasės įgalina skaityti iš specializuotų šaltinių, parūpina papildomą funkcionalumą ByteArrayInputStream, FileInputStream, FilterInputStream, InputStream, ObjectInputStream, PipedInputStream, SequenceInputStream, StringBufferInputStream BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader

Specializuotų srautų panaudojimas Sukuriamas reikiamas srauto objektas Pasinaudojama papildomomis galimybėmis. Pvz.: new ByteArrayInputStream(new byte[]{1,2,3}); new SequenceInputStream ( new FileInputStream( a.xx1 ), new FileInputStream( a.xx2 ) ); (new CharArrayWriter())... tochararray();

Bazinės I/O klasės išplėtimas Tiesioginis būdas sukurti savo I/O-klasę. Paveldint klasę iš Input/Output-Stream Užklojant metodą read() / write() Jeigu reikia užklojant ir kitus metodus Sekančioje skaidrėje pateiktas įvedimo srauto pavyzdys, kuris cikliškai gražina numatytąjį skaičių simbolių 0..9 kodų. Galėtų praversti testuojant modulius su I/O operacijomis.

import java.io.*; /** "Stream" as sequence of 1000 bytes as digits: 01234567890123456789... */ public class InputStream09 extends InputStream { static final int NMAX = 1000; int nread = 0; // How many bytes read public InputStream09() {super();} public int read () throws IOException { if (nread < NMAX){ int creturn = '0' + nread++ % 10; return creturn; //>>>> OK } else if (nread == NMAX) { nread++; return -1; //>>>> EOF } else throw new IOException("EOF or closed"); } public void close() throws IOException { nread= NMAX+1; // Mark file as closed super.close(); }}

public class TestInputStream09 { public static void main(string[] args) throws IOException { InputStream input =null; try { input = new InputStream09 (); for ( int b; (b = input.read())!= -1; ) { System.out.print((char)b); } input.close(); } catch ( IOException e ){ System.out.println(e); } finally { if (null!= input) {input.close();} } } }

Srautai kaip filtrai Remiasi realaus srauto apgaubimo (wrap) virtualaus srauto objektu filtru- idėja. Filtras prideda srautui papildomų funkcinių galimybių. Pvz., BufferedInputStream moka buferizuoti įvedamus baitus, nuskaitant iš vidinio srauto (įrenginio), LineNumberOutputStream moka skaičiuoti nuskaitytas eilutes. Abu apjungus, galima gauti buferizuotą srautą, su gebėjimu nustatyti eilutės numerį - getlinenumber(); Bazinis filtras FilterInputStream išvedimo nemodifikuoja.

Srautų apjungimo pavyzdys new LineNumberInputStream ( new BufferedInputStream ( new FileInputStream ( fn.abc ) ) );

UML klasių diagrama - InputStream +read() FilterInputStream #in +read() :LineNumberInputStream #in :BufferedInputStream #in :FileInputStream +read() +getlinenumber() 1* #pos +read() 1* +read()

Nuosavo filtro sukūrimas Išvedame klasę iš Filter-Input/Output- Stream/Reader Apibrėžiame konstruktorių, priimantį bazinio tipo srautą, kurį reikia apgaubti, kreipdamiesi į atitinkamą super() op-ją. Užklojame metodų read()/write() šeimą, peradresuodami vykdymą vidiniam srautui su reikiamomis modifikacijomis.

Pavyzdys: šifruojantysis išvedimo srautas Kiekvienąįrašomą baitą b šifruosime invertuodami bitus (key ^ b), kur key duotasis raktas perduodamas konstruktoriuje; esminė užklotis: void write(int b) {super.write(b^key);} reikėtų atitinkamai užkloti ir kitus write metodus.

Filtro įgyvendinimas /** Filter stream: Simple encryption */ import java.io.*; public class EncryptedOutputStream extends FilterOutputStream { final int key; public EncryptedOutputStream(OutputStream out, int key) { super(out); this.key = key; } public void write(int ch) throws IOException { ch ^= key; super.write(ch); } //...Kiti write metodai... } // end EncryptedOutputStream

Dekoratoriaus projektavimo šablonas Nagrinėjamas filtras tipiškas dekoratoriaus proj. šablono pavyzdys Įgalina vietoje komplikuotos klasių hierarchijos dinamiškai suteikti objektams reikalingas ypatybes realizacijos esmė objektas apgaubia kitą tos pačios klasių hierarchijos objektą, modifikuodamas vidiniam objektui deleguojamų operacijų vykdymą.

Kiti reikšmingi srautai Piped-Input/Output-Stream įgalina panaudoti I/O srautus kaip kanalą PrintWriter, PrintStream turi print(*) metodų šeimą bei format(*) metodą, panašaus naudojimo kaip C kalboje: System.out.format( "%f, %1$+020.10f %n", Math.PI);

Binarinis I/O Filtrai DataInputStream, DataOutputStreamįgalina įvesti/išvesti visas primityviąsias reikšmes (int, byte...) bei simbolių eilutes (String tipo) binariniu pavidalu. Kiekvienai rašymo op-jai yra atitinkama skaitymo: readdouble() atitinka writedouble(double v) ir t.t.

Data input/output sąsaja įgalina duomenų saugojimą tarp seansų String datafile = "invoicedata"; double[] prices = { 19.99, 9.99, 15.99, 3.99, 4.99 }; int[] units = { 12, 8, 13, 29, 50 }; String[] descs = { "Java T-shirt", "Java Mug", "Duke Juggling Dolls", "Java Pin", "Java Key Chain" };

Įrašymas out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(dataFile))); out.writeint(prices.length); for(int i = 0;i < prices.length;i++){ out.writedouble(prices[i]); out.writeint(units[i]); out.writeutf(descs[i]); }

Nuskaitymas in = new DataInputStream(new BufferedInputStream(new FileInputStream(dataFile))); double price; int unit; String desc; int n = in.readint(); // How many items for (int i = 0; i < n; i++) { } price = in.readdouble(); unit = in.readint(); desc = in.readutf(); System.out.format("You ordered %d units of %s at $%.2f%n", unit, desc, price);

Objektų srautai ObjectInputStream, ObjectOutputStream. Operacijos: writeobject(), readobject() Įgalina įrašyti į srautą ir po to nuskaityti bet kokį objektą, kuris pažymėtas Serialize interfeisu.

Objekto serializacija: įrašymas FileOutputStream out = new FileOutputStream("objdata.ser"); ObjectOutputStream s = new ObjectOutputStream(out); s.writeobject(new Date()); s.flush(); s.close();

Objekto nuskaitymas iš srauto FileInputStream in = new FileInputStream("objdata.ser"); ObjectInputStream s = new ObjectInputStream(in); Date date= (Date)s.readObject(); System.out.println(date); s.close();

Serializacijos pritaikymas Daugelis standartinių klasių serializuojamos, bet kai kurios - ne (pvz., Thread) Klasės neserializuojamus laukus galima pažymėti raktažodžiu transient Klasė gali papildyti standartinius ser-jos veiksmus parūpindama metodus writeobject, readobject Klasė gali sukurti savo ser-jos protokolą pagal Externalizable interfeisą.

Standartiniai srautai System.in /.out /.err sukuriami automatiškai System.in baitų srautas, patartina naudoti kaip new InputStreamReader(System.in) System.out/.err PrintStream tipo, įgalina išvesti bet kokio tipo duomenis simbolių pavidalu println()įbaitų srautą, koduojant standartiniu sistemos kodavimu

Kitos klasės java.io.file apgaubia failo vardą. Turi failų atributų tikrinimo, sukūrimo / pašalinimo, katalogų peržiūros operacijas. java.io.randomaccessfile tiesioginės skaitymo / rašymo kreipties klasė. Leidžia skaitymo / rašymo / pozicionavimo operacijas.

S K A I D R I Ų P A B A I G A