You are on page 1of 20

Raunarski praktikum

Ulazno izlazni podsistem

Ulazno izlazni podsistem


standardna biblioteka za ulazno/izlazne operacije izvorita/odredita:


tastatura/konzola fajl sistem

memorija
mrene konekcije

oslanja se na tokove (streams) i itae/pisae (reader/writer)


2/20

tampanje na ekran
System.out je izlazni tok:
System.out.print(Poruka); System.out.println(Poruka);

Ispis se moe i formatirati:


System.out.printf(format, argumenti); System.out.printf(%.2f %d, (10000.0 / 3), 5);

3/20

tampanje na ekran
Funkcija printf iz biblioteke stdio.h

Prvi parametar je specifikator formata ispisa, a ostali parametri su varijable ija se vrednost tampa. Specifikator formata:
%[irina][.preciznost]tip

4/20

printf - irina
Definie broj cifara
[irina] Kako utie na preciznost ---------+-------------------------------------------------------n tampa zadati broj cifara. 0n tampa zadati broj cifara. Ako broj nema toliko cifara, sa leve se popunjava nulama.

5/20

printf tip - brojevi


Tip Oekivan ulaz Format rezultat -----------------------------------------------------------------------------Brojevi -----------------------------------------------------------------------------b Boolean Boolean d Integer Signed decimal integer o Integer Unsigned octal integer u Integer Unsigned decimal integer h,x Integer Unsigned hexadecimal int (with a, b, c, d, e, f) H,X Integer Unsigned hexadecimal int (with A, B, C, D, E, F) f Floating point Signed value oblika [-]dddd.dddd. e Floating point Signed value oblika [-]d.dddd or e[+/-]ddd g Floating point Krai zapis od %f i %e E Floating point Isto kao e; samo ima E za eksponent G Floating point Isto kao e; samo ima E za eksponent ako je e format ------------------------------------------------------------------------------

6/20

printf tip - karakteri


Tip Oekivan ulaz Format rezultat --------------------------------------------------------------------------Karakteri --------------------------------------------------------------------------c Character Jedno slovo s String tampa string do kraja ili do zadatog broja slova % Nita tampa znak % ---------------------------------------------------------------------------

7/20

printf - primeri
System.out.printf("celobrojni: %d\n", c); System.out. printf("celobrojni: %6d\n", c); System.out. printf("celobrojni: %-6d\n", c); System.out. printf("celobrojni: %+6d\n", c); System.out. printf("celobrojni: %+6d\n", -c); System.out. System.out. System.out. System.out. System.out. printf("razlomljeni: printf("razlomljeni: printf("razlomljeni: printf("razlomljeni: printf("razlomljeni: --> --> --> --> --> --> --> --> --> --> celobrojni: 356 celobrojni: 356 celobrojni: 356 celobrojni: +356 celobrojni: -356 razlomljeni: razlomljeni: razlomljeni: razlomljeni: razlomljeni: 3.141000 3.14 3.141000e+00 3.14e+00 3.14100

%f\n", 3.141); %6.2f\n", 3.141); %e\n", 3.141); %6.2e\n", 3.141); %g\n", 3.141);

TestPrintf.java

8/20

Unos sa tastature
System.in je ulazni tok:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String s = in.readLine();

Alternativa je klasa Scanner koja ne uitava samo stringove:


Scanner sc = new Scanner(System.in); String s = sc.nextLine(); int i = sc.nextInt(); float f = sc.nextFloat();
9/20

Unos drugih primitivnih tipova sa tastature


Koristi se wrapper klasa i njena metoda parseXxx():
BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); String s = in.readLine(); int i = Integer.parseInt(s);

Krae je klasom Scanner:


Scanner sc = new Scanner(System.in); int i = sc.nextInt();

10/20

Klasa Console
Sistemska konzola:
Console c = System.console();

Metode:
printf("format", promenljive) readLine() readLine("format", promenljive)
ispie promenljive u zadatom formatu, pa uita jedan red teksta

readPassword()
ita ifru sa tastature, bez prikazivanja slova

readPassword("format", promenljive)
ispie promenljive u zadatom formatu, pa uita ifru sa tastature, bez prikazivanja slova
ConsoleTest.java
11/20

File klasa
Za manipulaciju datotekama i direktorijumima:
kreiranje datoteka i direktorijuma brisanje datoteka i direktorijuma pristup atributima datoteka i direktorijuma modifikacija naziva i atributa datoteka i direktorijuma

FileTest.java

12/20

File klasa
File f = new File("."); File f = new File("C:\Windows"); f = new File(f, "pera"); f = new File(f, "..");

if(f.exists()) ... if(f.isDirectory()) ... f.createNewfile();


13/20

Tokovi (streams) 1/4


Bazirani na bajtovima
prenos jednog bajta prenos niza bajtova rad sa primitivnim tipovima podataka (int, boolean, float, ...)

14/20

Tokovi (streams) 2/4


Osmiljeni kao mehanizam koji omoguuje unificiran pristup podacima Isti kd se koristi za itanje/pisanje iz, na primer, datoteke ili mrene konekcije Koncept filtera - donose dodatnu funkcionalnost tokovima:
prenos primitivnih tipova na mainski nezavisan nain (DataInputStream, DataOutputStream) baferizovan prenos podataka (BufferedInputStream, BufferedOutputStream)

FileStreamTest.java

15/20

Tokovi (streams) 3/4


Metode u tokovima:
read() ita jedan bajt iz toka read(byte[]) ita niz bajtova
vraa proitan broj bajtova ili -1 ako je stigla do kraja datoteke

skip(long n) preskae zadati broj bajtova available() vraa broj raspoloivih bajtova iz toka koji se mogu proitati pre blokiranja sledeeg itanja close() zatvara tok
16/20

Tokovi (streams) 4/4


Primer upotrebe kopiranje sadraja datoteke:
byte[] buffer = new byte[BUFFER_LENGTH]; while((read=in.read(buffer, 0,BUFFER_LENGTH)) != -1) { // obrada uitanog niza bajtova out.write(buffer); }

CopyFile.java

17/20

itai/pisai (readers/writers) 1/2


Koriste se za prenos Unicode teksta: itai/pisai ne zamenjuju tokove oni ih dopunjuju itai/pisai se koriste kada je potrebno preneti Unicode stringove ili karaktere u ostalim situacijama koriste se tokovi

18/20

itai/pisai (readers/writers) 2/2


Metode u itaima:
read() ita jedan karakter iz toka read(char[]) ita niz karaktera skip(long n) preskae zadati broj karaktera close() zatvara ita

Baferizovani ita (BufferedReader)


metoda readLine vraa uitan string ili null ako je stigao do kraja datoteke

tampanje stringova u datoteku (PrintWriter)


metoda println tampa tekst u datoteku
FileReaderWriterTest.java
19/20

Zakljuak
Podaci se u itaju iz ulaznih tokova, a piu u izlazne tokove Iz programa se retko radi direktno sa bajtovima
zato se tokovi ugrauju u Filter klase koje imaju odgovarajue metode za itanje/pisanje zato imamo tokove objekata, tokove primitivnih tipova itd.

Ako radimo sa karakterima/stringovima, koristimo itae i pisae

20/20

You might also like