Documente Academic
Documente Profesional
Documente Cultură
Curs 5
Exceptii
Intrari/Iesiri
Exceptii
Categorii de excepii
Runtime Exceptions
Checked Exceptions
Aruncarea excepiilor
// deschidere fisier nou
public static RandomAccessFile rewrite ( String fname ) throws
IOException
{
// arunca exceptie
RandomAccessFile f=new RandomAccessFile (fname,"rw");
return f;
}
public static void main (String[] arg) throws IOException
{
// arunca exceptie
RandomAccessFile f= rewrite ("numere.bin ");
for (int i=0;i<20;i++)
f.writeInt (i); // arunca exceptie
f.close(); // arunca exceptie
}
Tratarea exceptiilor
unde:
Intrari/Iesiri
Definitii
Observatii
Clasificarea fluxurilor
citirea/scrierea datelor)
InputStream
int read()
int read()
OutputWriter
void write(int c)
void write(int c)
Fluxuri primitive
Fisier
FileReader, FileWriter
FileInputStream, FileOutputStream
Numite si fluxuri fisier, acestea sunt folosite pentru citirea datelor dintr-un
fisier, respectiv scrierea datelor intr-un fisier
Fluxuri primitive
Memorie
CharArrayReader, CharArrayWriter
ByteArrayInputStream, ByteArrayOutputStream
Aceste fluxuri folosesc pentru scrierea/citirea informatiilor in/din memorie si
sunt create pe un vector existent deja. Cu alte cuvinte, permit tratarea
vectorilor ca sursa/destinatie pentru crearea unor fluxuri de intrare/iesire.
StringReader, StringWriter
Permit tratarea sirurilor de caractere aflate in memorie ca
sursa/destinatie pentru crearea de fluxuri.
Pipe
PipedReader, PipedWriter
PipedInputStream, PipedOutputStream
Fluxuri de procesare
Fluxuri de procesare
Bufferizare
BufferedReader, BufferedWriter
BufferedInputStream, BufferedOutputStream
Filtrare
FilterReader, FilterWriter
FilterInputStream, FilterOutputStream
Sunt clase abstracte ce definesc o interfat a comuna pentru fluxuri care filtreaza
automat datele citite sau scrise.
Conversie octeti-caractere
InputStreamReader, OutputStreamWriter
Concatenare
SequenceInputStream
Concateneaza mai multe fluxuri de intrare intr-unul singur.
Serializare
ObjectInputStream, ObjectOutputStream
Sunt folosite pentru serializarea obiectelor.
DataInputStream, DataOutputStream
Numarare
LineNumberReader
LineNumberInputStream
Citire in avans
PushbackReader
PushbackInputStream
Sunt fluxuri de intrare care au un buffer de 1-caracter (octet) in care este
citit in avans si caracterul (octetul) care urmeaza celui curent citit.
Afisare
PrintWriter
PrintStream
Ofera metode convenabile pentru afisarea informatiilor.
Regula
FluxPrimitiv numeFlux = new FluxPrimitiv(dispozitivExtern);
Din acest motiv orice creare a unui flux de acest tip trebuie
facuta intr-un bloc try-catch sau metoda in care sunt create
fluxurile respective trebuie sa arunce exceptile de tipul
FileNotFoundException sau de tipul superclasei
IOException.
import java.io.*;
public class Copiere {
public static void main (String [] args) {
try {
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 ();
} catch ( IOException e) {
System.err.println (Eroare la operatiile cu fisiere!");
e.printStackTrace ();
}
}
}
Metoda readLine
Este specifica fluxurilor de citire cu buffer si permite citirea linie
cu linie a datelor de intrare. O linie reprezinta o succesiune de
caractere terminata cu simbolul pentru sfarsit de linie, dependent
de platforma de lucru. Acesta este reprezentat in Java prin
secventa escape \n;
BufferedReader br = new BufferedReader(new FileReader("in"))
String linie;
while ((linie = br.readLine()) != null) {
...
//proceseaza linie
}
br.close();
Concatenarea fluxurilor
Clasele DataInputStream si
DataOutputStream
DataOutputStream
readBoolean
writeBoolean
readByte
writeByte
readChar
writeChar
readDouble
writeDouble
readFloat
writeFloat
readInt
writeInt
readLong
writeLong
readShort
writeShort
readUTF
writeUTF