Documente Academic
Documente Profesional
Documente Cultură
Prezentare 13:
Input/Output
Fisiere in format
binar
Serializarea
PROGRAMARE ORIENTATA obiectelor
OBIECT
2020
Fisiere binare
07.12.2020 POO 2
Fisiere binare
Deschidere pentru scrierea datelor de tip primitiv
FileOutputStream fos = new FileOutputStream(numeFis);
DataOuputStream inFis = new DataOutputStream(fos);
DataOutputStream nu are niciun constructor care sa primeasca un
nume de fisier ca argument, dar accepta un FileOutputStream
poate fi aruncata exceptia – FileNotFoundException – daca
fisierul nu poate fi deschis pentru scriere: nu exista sau nu poate fi
creat sau exista si nu poate fi deschis
fisierul este vid initial
o daca nu exista, este creat
07.12.2020 POO 3
Fisiere binare
Deschidere pentru scrierea datelor de tip primitiv
07.12.2020 POO 4
Fisiere binare
Deschidere pentru scriere utilizand clasa File
caracter Unicode
writeShort – scrie low-order 16 bits ai argumentului de tip int
07.12.2020 POO 6
Fisiere binare
Inchidere fisier
inFis.close();
07.12.2020 POO 7
Fisiere binare
Adaugare in fisier
07.12.2020 POO 8
Fisiere binare
Operatii cu fisiere binare
catch (FileNotFoundException e) {
rez = 1; //err deschidere fis
}
catch (IOException e) {
rez = 2; // err scriere fis
}
07.12.2020 POO 10
Fisiere binare
finally {
try {
if(fluxFis != null)
fluxFis.close();
}
catch(IOException e) {
rez = 3; //err inchidere fis
}
return rez;
}
}
}
07.12.2020 POO 11
Fisiere binare
Deschidere pentru citirea valorilor primitive - DataInputStream
readByte – citeste si intoarce urmatorul octet din fisier ca
o valoare de tip byte
readChar – citeste si intoarce urmatorii doi octeti din fisier
ca o valoare de tip char
readShort – citeste si intoarce urmatorii doi octeti din
fisier ca o valoare de tip short
readInt – citeste si intoarce urmatorii patru octeti din fisier
ca o valoare de tip int
readLong – citeste si intoarce urmatorii opt octeti din fisier
ca o valoare de tip long
07.12.2020 POO 12
Fisiere binare
Deschidere pentru citire - DataOutputStream
readFloat – citeste si intoarce urmatorii patru octeti din
fisier ca o valoare de tip float
readDouble – citeste si intoarce urmatorii opt octeti din
fisier ca o valoare de tip double
readBoolean – citeste si intoarce urmatoarea valoare de
tip boolean
07.12.2020 POO 13
Fisiere binare
while (true) {
int num = dinFis.readInt();
System.out.println(num);
}
}
07.12.2020 POO 14
Fisiere binare
catch (FileNotFoundException e) {
rez = 1; // err deschidere fis
}
catch (EOFException e) { // comportament normal; exceptia este ignorata
}
catch (IOException e) {
rez = 2; // err citire din fis
}
07.12.2020 POO 15
Fisiere binare
07.12.2020 POO 16
Fisiere binare
de tip String
pot arunca exceptia IOException
07.12.2020 POO 17
Fisiere binare
Observatii
Un fisier binar poate contine valori avand tipuri diferite
trebuie scrise/citite cu metodele corespunzatoare
fisierului
07.12.2020 POO 18
Serializarea obiectelor
Serializable (java.io)
07.12.2020 POO 19
Serializarea obiectelor
Scrierea obiectelor
writeObject din clasa ObjectOutputStream
07.12.2020 POO 20
Serializarea obiectelor
Citirea obiectelor
readObject din clasa ObjectInputStream
07.12.2020 POO 21
Serializarea obiectelor
07.12.2020 POO 22
Serializarea obiectelor
Particularitati
Un obiect serializat primeste un numar de serializare si este
numarul de serializare
La citirea obiectului serializat, se citesc atat datele cat si
o referinta la obiect
07.12.2020 POO 23
Serializarea obiectelor
Observatii
Ar trebui serializate toate obiectele pentru a salva spatiu? NU
anumite obiecte nu trebuie salvate in fisier
probleme de securitate
String implementeaza interfata Serializable, se poate folosi
metoda writeObject in loc de writeUTF
array(s) sunt tratate ca obiecte, deci serializabile; pot fi
utilizate metodele writeObject, readObject
Serializare.zip
07.12.2020 POO 24
Serializarea obiectelor
Controlul serializarii
Implementarea interfetei Externalizable
Externalizable extinde interfata Serializable si adauga
Externaliz.zip
Transient.zip
07.12.2020 POO 25