Sei sulla pagina 1di 11

Corso di

Java INTERNET
TECNOLOGIE File - IO E WEB
Corso diProf. Marco
Laurea Mamei
in Ingegneria Gestionale
java.io

Il pacchetto java.io definisce delle classi per accedere in


modo semplice a file e altre sorgenti dati.

È un argomento abbastanza complesso che richiede


una buona comprensione della programmazione ad
oggetti.

Noi vedremo solo alcuni esempi notevoli che coprono


tutti i casi che incontreremo nel corso
Leggere e Scrivere un file di testo

BufferedReader br = new BufferedReader(new FileReader("file.txt"));


String line;
while((line = br.readLine()) != null)
System.out.println(line);
br.close();

PrintWriter out = new PrintWriter(new FileWriter("out.txt"));


for(int i=0; i<100;i++)
out.println(i);
out.close();
Creare e Leggere Directory

File dir = new File("C:/DATASET");


System.out.println(dir.getAbsolutePath());
System.out.println(dir.getName());

if(!dir.exists())
dir.mkdirs();

String[] f = dir.list();
for(int i=0; i<f.length;i++)
System.out.println(f[i]);
Corso di
Java Eccezioni
TECNOLOGIE INTERNET E WEB
Corso diProf. Marco
Laurea Mamei
in Ingegneria Gestionale
Errori

È sempre possibile che un’operazione di IO non vada a buon fine.


– Ad esempio si può cercare di aprire un file che non esiste
– oppure cercare di scrivere su di un file protetto in scrittura
– o leggere un file protetto in lettura.
– …

Gli errori di ingresso e uscita sono segnalati lanciando un’eccezione che


deve essere catturata o passata al programma chiamante…
Eccezioni 1/2
Java possiede un meccanismo che permette al programmatore di trattare
le situazioni anomale in modo flessibile, elegante e perfettamente integrato
con la metodologia orientata ad oggetti

Come funziona il meccanismo di gestione delle eccezioni?


– Quando si verifica un imprevisto, il metodo attivo lancia (throw)
un'eccezione che viene passata al metodo chiamante. Il metodo attivo
termina l'esecuzione (come con return).

Chiamata

Problema!
Eccezione

Metodo chiamante (es. main) Metodo attivo (es. leggiFile)


Eccezioni 2/2

Per default, un metodo che riceve un'eccezione termina l'esecuzione e


passa l'eccezione al metodo chiamante.Quando l'eccezione raggiunge
main, l'esecuzione del programma termina stampando un opportuno
messaggio di errore.

Ma un metodo chiamante può essere progettato in modo da:


– catturare (catch) un'eccezione lanciata da un metodo invocato;
– trattarla con opportune istruzioni;
– proseguire l'elaborazione senza terminare disastrosamente.
Eccezioni

public static void bar(){


Integer o = null;
System.out.println(o.toString());
}
public static void foo(){
bar();
}
public static void main(String [] args){
foo();
}

Exception in thread "main" java.lang.NullPointerException


at Example.bar(Example.java:8)
at Example.foo(Example.java:11)
at Example.main(Example.java:14)
Try - Catch

public static void bar(){


try {
Object o = null;
System.out.println(o.toString());
} catch(Exception e) {
System.out.println("Problemi");
}
System.out.println("Riprendo l'esecuzione");
}

public static void foo(){


bar();
}

public static void main(String [] args){


foo();
}
Gestione delle Eccezioni
Con alcuni oggetti, il compilatore obbliga a gestire le eccezioni. (vedremo
a breve degli esempi)

Due possibilità per gestire


– Usare il try-catch attorno alle istruzioni "pericolose"
– Definire il metodo con la keyword throws Exception
public static void foo() throws Exception {

In questi casi è tipicamente opportuno visualizzare quante più informazioni


possibili sull'errore

try {
...
} catch(Exception e) {
e.printStackTrace();
}

Potrebbero piacerti anche