Limbajul JAVA – Operatii I/O.Conversii

0
568
tutorial java
Limbajul JAVA – Operatii I/O.Conversii
Ti-a placut acest articol? Acorda-i o nota

VI.  Limbajul JAVA – Operatii I/O.Conversii

 

1.  Operatii de intrare

Functii de biblioteca in pachetul java.io.
Permit tratarea unitara a dispozitivelor de I/O.
Toate operatiile se bazeaza pe conceptul de flux de date (stream)

  • Input stream (extern -> memorie)
  • Output stream (memorie -> extern)

Dispozitive standard –prin membrii statici in java.lang.System -System.in (tastatura), System.out (monitor)
Functiile de I/O genereaza erori de tipul IOException
Pentru fisiere FileInputStream si FileOutputStream
Operatiile I/O sunt definite si pentru resurse Internet
Citirea datelor dintr-un flux de intrare text (linii de text) se realizeaza prin BufferedReader
Toate intrarile se trateaza identic
Ex. pt. tastatura:

BufferedReader flux_intrare = new
 BufferedReader(new
 InputStreamReader(System.in));

Ex. pt. un fisier:

BufferedReader flux_intrare = new
 BufferedReader(new InputStreamReader(
 new FileInputStream(numeFisier)));

Ex. pt. o pag. Web:

URL webObj = new
 URL("http://etutoriale.net/");
 BufferedReader flux_intrare =
 new BufferedReader(
 newInputStreamReader(
 webObj.openStream()));

1.1   Operatii de intrarea in mod text

JAVA

int read()
int read(char cbuf[])
int read(char cbuf[], int offset, int length)
BufferdReader -String readln()

1.2   Operatii de intrarea in mod binar

java

int read()
int read(byte bbuf[])
int read(byte bbuf[], int offset, int length)

Citirea dintr-un stream:

String linie; // declarare stream de intrare de tip BufferdReader
try {
while ((linie = flux_intrare.readLine()) != null) System.out.println(linie);
} catch (IOExcetion) {
System.out.println(“Eroare de citire date!”);
flux_in.close();

Pentru tratarea unui fisier in mod binar se poate utiliza clasa FileReader si metoda read()
Ex.:

File inputFile = new File(“a.txt");
FileReader in = new FileReader(inputFile);
int c;
while ((c = in.read()) != -1)
System.out.println((char)c);
in.close();

Scrierea datelor dintr-un flux de iesire text (linii de text) se realizeaza prin clasa PrintStream sau PrintWriter
Toate iesirile se trateaza identic
Ex. pt. consola:
System.out este derivat direct din PrintStream

 

2.  Operatii de iesire

Scrierea intr-un fisier:

PrintWriter fis = new PrintWriter(new FileWriter("FisIesire.txt"));
int i = 12;
boolean b = false;
fis.println(i); fis.println(“Numar “+i);
fis.println(b);
fis.close();

2.1  Operatii de iesire in mod text

Operatii de iesire in mod text

 

int write(int c)
int write(char cbuf[])
int write(char cbuf[], int offset, int length)
PrintWriter void println(String s)

2.2  Operatii de iesire in mod binar

Operatii de iesire in mod binar

int read()
int read(byte bbuf[])
int read(byte bbuf[], int offset, int length)

Exemplu: copierea continutului unui fisier:

import java.io.*;
public class Copy {
public static void main(String[] args) throws IOException {
FileReader in = new FileReader(“in.txt”);
FileWriter out = new FileWriter(“out.txt”);
int c;
while ((c = in.read()) != -1) out.write(c);
in.close();
out.close();
}
}

3. Conversii

Deoarece limbajul Java are atat tipuri primare cat si clase (obiecte) operatiile de converise pot fi impartite in:

  • Conversii intre tipuri primare
  • Conversii intre obiecte
  • Conversii intre tipuri primare si obiecte

Un caz special il constituie conversia la tipul String
Conversii intre tipurile de baza pot fi facute implicit sau explicit
Conversiile implicite pot fi facute daca nu se pierde din precizie (ex. de la int la double)
Conversiile explicite pot fi facute si daca se pierde din precizie (ex. (int)(x/y))

Conversii intre tipul String si tipurile primitive: prin metoda statica String.valueOf ()

double media = 9.25;
String s = String.valueOf(media);

Conversiile intre obiecte si tipul String se poate face apeland metoda toString()

Pentru a folosi tipurile de baza pe post de obiecte se pot folosi “wrapper classes”din pachetul java.lang:

  • Integer pentru int
  • Short pentru short
  • Byte pentru byte
  • Long pentru long
  • Float pentru float
  • Double pentru double
  • Boolean pt. boolean
  • Character pentru char
  • Void pentru void

Clasele numerice contin de asemenea constante statice MIN_VALUE si MAX_VALUE
Pentru conversii de la String la tipurile de baza exista metode statice de prelucrare:

int a = Integer.parseInt(“121”);
double b = Double.parseDouble(“2.34”);
boolean c = Boolean.getBoolean(“true”);
Pentru conversii la tipurile de baza exista metode statice de acces:
Boolean a = new Boolean(“true”).booleanValue();
Double b = new Double (“2.34”).doubleValue();
Integer c = new Integer(“121”).integerValue();

Conversiile intre obiecte se pot realiza pe relatia subclasa la superclasa
Prin conversie nu se modifica obiectul ci se creaza doar o referinta prin care obiectul este privit ca si cum ar fi instanta unei superclase a sa
Se poate realiza si conversia unui obiect la o interfata implementata de clasa acestuia sau de una dintre superclasele sale

NICIUN COMENTARIU

LĂSAȚI UN MESAJ