Documente Academic
Documente Profesional
Documente Cultură
Tehnologii utilizate
• Fluxuri de nivel scăzut (Low-level streams). Un flux de intrare sau de ieșire este conectat direct
la sursa de date (fișier, socket).
• Fluxuri de nivel înalt (High-level streams). Sunt fluxuri de intrare sau ieșire care citesc sau scriu
din/în alte fluxuri.
Fluxuri binare de intrare (citire)
Interfața DataInput
• Conține metode dedicate citirii datelor de tip primitive și a șirurilor în format UTF
Metode de citire la nivel de byte
public void readFully(byte[] b, int off, int len) throws IOException
public void readFully(byte[] b) throws IOException
Citire șiruri
public String readLine() throws IOException
public String readUTF() throws IOException
Poziționare
public int skipBytes(int n) throws IOException
Citire primitive
public boolean readBoolean() throws IOException
public byte readByte() throws IOException
public int readUnsignedByte() throws IOException
public short readShort() throws IOException
public int readUnsignedShort() throws IOException
public char readChar() throws IOException
public int readInt() throws IOException
public long readLong() throws IOException
public float readFloat() throws IOException
public double readDouble() throws IOException
Clasa InputStream
• Clasă abstractă care conține metode pentru funcționalitățile de bază, comune ierarhiei
• Declarația de clasă
public abstract class InputStream extends Object implements Closeable;
• Principalele metode:
public int available() throws IOException;
public void close() throws IOException;
public abstract int read() throws IOException;
public int read(byte[] b) throws IOException;
public int read(byte[] b, int off, int len) throws IOException;
public long skip(long n) throws IOException;
Clasa FileInputStream
• Constructori:
FileInputStream(String cale) throws FileNotFoundException;
FileInputStream(File fisier) throws FileNotFoundException;
• Constructori
public DataInputStream(InputStream in);
• Constructori
FileOutputStream(String cale) throws FileNotFoundException;
FileOutputStream(File fisier) throws FileNotFoundException;
public FileOutputStream(String name, boolean append) throws
FileNotFoundException;
public FileOutputStream(File file, boolean append) throws
FileNotFoundException
Clasa DataOutputStream
• Constructor:
public DataOutputStream(OutputStream fluxIesire);
• Metodă specifică:
public final int size(); //Numărul de octeți scriși în fluxul de ieșire până la momentul
curent
Fluxuri caracter
Clasa Reader
• Clasă abstractă care conține metodele de citire caractere la nivel scăzut
• Declarația de clasă:
public abstract class Reader extends Object;
• Câmpuri:
protected Object lock ; // obiect folosit in sincronizare
• Metode:
public int read() throws IOException;
public int read(char[] cbuf) throws IOException;
public abstract int read(char[] cbuf, int off, int len) throws IOException;
public boolean ready() throws IOException;
Clasa FileReader
• Constructori:
FileReader(File fis) throws FileNotFoundException;
FileReader(String fis) throws FileNotFoundException;
Clasa BufferedReader
• Este utilizată pentru implementarea fluxurilor de nivel superior de tip caracter
• Constructori:
BufferedReader(Reader flux); //flux - este un flux de nivel scăzut care citește
caracter cu caracter
BufferedReader(Reader flux, int marime);
• Conține o metodă pentru pentru citire linii. Aceasta preia caracterele furnizate de
fluxul de nivel scăzut și pana la întâlnirea caracterelor de sfârșit de linie și
întoarce un obiect String:
String readLine() throws IOException;
Clasa InputStreamReader
Este un flux de legătura cu fluxurile binare. Legătura se face prin codificare. Față de
fluxurile caracter conține în plus informații de codare (UTF8, UTF16, etc.)
Declarația de clasă:
public class InputStreamReader extends Reader;
Metoda care întoarce tipul de codificare:
public String getEncoding();
Constructorii primesc și un parametru de tip Charset reprezentând codificarea:
public InputStreamReader(InputStream in);
public InputStreamReader(InputStream in, String charsetName) throws
UnsupportedEncodingException;
public InputStreamReader(InputStream in, Charset cs);
public InputStreamReader(InputStream in, CharsetDecoder dec) ;
Clasa Writer
Clasa BufferedWriter
Flux de nivel superior utilizat pentru scriere în fișiere text
Constructori:
BufferedWriter(Writer flux);
BufferedWriter(Writer flux,int marime);
Metoda de scriere linie nouă:
void newLine() throws IOException; // Inserează sfârșitul de linie
Clasa PrintWriter
Metode:
void print(...);
void println(...);
Clasa OutputStreamWriter
Transformarea datelor în secvențe de octeți astfel încât să poată fi transmise pe un flux de ieșire
• Este o metoda utilizata pentru a personaliza procesul de serializare. Folosirea interfeței impune existența
unui constructor fără parametrii pentru clasele obiectelor serializate.
Declarația de clasă:
public interface Externalizable extends Serializable;
Metode de implementat pentru citire si scriere:
public void writeExternal(ObjectOutput out) throws IOException;
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException; // in si out sunt
fluxuri de citire si scriere la nivel de obiect
Controlul versionării
• Un obiect serializat într-o anumită versiune de clasă trebuie deserializat în
aceeași versiune
• Controlul versiunii se face printr-un câmp static:
public static final long serialVersionUID = valoare;
• Dacă nu este declarat explicit, acest câmp este adăugat automat de JVM
• La momentul deserializării se compară valorile acestui câmp și este aruncată o
excepție de tipul InvalidClassException dacă acestea sunt diferite
Exemplu. E_nio