Java I/O. Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi.

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Java I/O. Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi."

Transcript

1 Java I/O Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi fanizzi@di.uniba.it

2 Introduzione Spesso un programma deve acquisire dati da una sorgente o inviare informazioni a una destinazione (esterne) L informazione può essere di ogni tipo: caratteri immagini suoni oggetti Librerie java.io (e la nuova java.nio) 2

3 3 Classe File Serve per ottenere informazioni riguardo un file NB: : Creare un oggetto di tipo File non significa creare un file fisico Costruttori File(String percorso) Crea un oggetto di tipo File a partire da una stringa (il percorso) File(File dir, String nome) Crea un oggetto di tipo File denominato nome a partire dalla directory dir (descritta tramite un oggetto di tipo File) File(String dir, String nome) Crea un oggetto di tipo File denominato nome a partire dalla directory dir (descritta tramite una stringa)

4 Esempio Uso di File 1. import java.io.file; 2. true 3. public class FileInfo { true 4. public static void main(string[] args) false 5. throws java.io.ioexception { true 6. File f = new File("FileInfo.class"); true 7. System.out.println(f.exists()); System.out.println(f.isFile()); C:\Prove\FileInfo.class 9. System.out.println(f.isDirectory()); FileInfo.class 10. System.out.println(f.canRead()); null 11. System.out.println(f.canWrite()); C:\Prove 12. System.out.println(f.length()); 13. System.out.println(f.getAbsolutePath()); 14. System.out.println(f.getName()); 15. System.out.println(f.getParent()); 16. File p = new File(f.getAbsolutePath()); 17. System.out.println(p.getParent()); 18. } 19. } 4

5 File Metodi Metodi Utili boolean delete() Cancella il file o la directory specificata boolean mkdir() Crea la directory boolean renameto(file dest) Cambia nome al file String[] list() Restituisce un vettore con i nomi dei file della directory dall oggetto File File[] listfiles() Restituisce un vettore con gli oggetti File che fanno file della directory riferita dall oggetto File 5

6 1. import java.io.file; public class Lista { 4. Esempio Listato Directory 5. public static void main(string[] args) { 6. File workingdir = new File("."); 7. String[] lista = workingdir.list(); 8. for(int i=0; i<lista.length; i++) 9. System.out.println(lista[i]); 10. } 11.} Lista.java Lista.class Copy.java Copy.class FileInfo.java FileInfo.class 6

7 7 Input / Output scrittura sorgente applicazione destinazione lettura

8 8 Flussi di Input / Output Per acquisire dati, una applicazione deve aprire uno stream (o flusso) associato alla sorgente di informazione (file, socket, memoria, ecc.) e leggere l informazione sequenzialmente da esso Un programma può inviare verso una destinazione esterna dei dati aprendo uno stream associato alla destinazione e scrivendovi in modo sequenziale i dati Indipendentemente dall origine e dalla destinazione dei dati e dal loro tipo, gli algoritmi per leggere e scrivere sequenzialmente dei dati sono molto simili

9 9 Lettura / Scrittura Sequenziale Lettura Apertura dello stream Finché ci sono dati da leggere lettura dato Chiusura dello stream Scrittura Apertura dello stream Finché ci sono dati da scrivere scrittura dato Chiusura dello stream

10 Tipi di Flusso 10 Le classi di gestione degli stream sono di due tipi in base ai dati su cui operano: caratteri / byte Stream di Caratteri (Unicode 16bit) classi Reader e Writer e derivate Stream di Byte (8bit) classi InputStream e OutputStream e derivate Esistono varie sottoclassi che consentono la lettura/scrittura su file come, ad es.: FileReader e FileWriter (testo) FileInputStream e FileOutputStream (binari) Possono sollevare eccezioni della classe IOException (e sue derivate)

11 Tipi di Flusso 11 Le classi astratte Filter- rappresentano i flussi ai quali è applicato una forma di filtraggio man mano che essi vengono letti/scritti I flussi Buffered- aggiungono ad ogni flusso un buffer per aumentare l'efficienza I flussi Piped- vengono progettati a coppie in modo da poterle collegare I flussi di memoria permettono di utilizzare strutture dati presenti in memoria come sorgenti/destinazioni di informazione I flussi Print- permettono di controllare la formattazione dell'output Altri flussi: utili alla costruzione di parser PushbackInputStream LineNumberInputStream StreamTokenizer

12 Classi dei Flussi di Byte FileInputStream frammento 12 PipedInputStream DataInputStream FilterInputStream BufferedInputStream InputStream ByteArrayInputStream PushbackInputStream SequenceInputStream LineNumberInputStream StringBufferInputStream ObjectInputStream gerarchia analoga per OutputStream

13 InputStream 13 abstract int read() legge il prossimo byte di dati dallo stream int read(byte[] b) legge i prossimi byte di dati dallo stream salvandoli nel buffer array b int read(byte[] b, int off, int len) legge len byte dallo stream salvandoli nell'array b a partire da off void reset() riposiziona lo stream all ultima marcatura provocata da mark() long skip(long n) salta i prossimi n byte letti dallo stream int available() restituisce il numero di byte leggibili da questo stream void mark(int readlimit) marca la posizione corrente boolean marksupported() Testa se lo stream supporta i metodi mark e reset void close() chiude lo stream Corso di Programmazione e rilascia (IPSW) le risorse 2004 S.Ferilli associate & N.Fanizzi - dib - UniBA

14 Esempio Conteggio Byte Letti da Stream 1. import java.io.*; public class ContaByte { 4. public static void main(string[] args) throws IOException { 5. InputStream in = new FileInputStream(args [0]); 6. int totale; 7. while (in.read()!= -1) 8. ++totale; 9. System.out.pritln( Letti: +totale+ byte ); 10. in.close(); 11. } 12. } 14

15 OutputStream 15 abstract void write(int b) scrive il byte specificato sullo stream void write(byte[] b) scrive i b.length byte dell'array specificato sullo stream void write (byte[] b, int off, int len) scrive sullo stream len byte dell'array specificato iniziando da offset void flush() svuota lo stream, forzando la scrittura dei byte ancora nel buffer void close() chiude lo stream rilasciando le risorse associate

16 Classi dei Flussi di Caratteri frammento 16 BufferedReader LineNumberReader CharArrayReader Reader InputStreamReader FilterReader FileReader PushBackReader PipedReader StringReader gerarchia analoga per Writer

17 Reader 17 abstract void close() chiude il flusso void mark(int readaheadlimit) marca la posizione corrente boolean marksupported() dice se lo stream supporta la marcatura int read() legge un carattere int read(char[] cbuf) legge caratteri in un array abstract int read(char[] cbuf, int off, int len) legge caratteri in una porzione di array int read(charbuffer target) cerca di leggere caratteri nel buffer di caratteri specificato boolean ready() dice se lo stream è pronto per nuove letture void reset() resetta lo stream long skip(long n) salta n caratteri

18 1. import java.io.*; 2. Esempio Lettura da Reader 3. public class ContaSpazi { 4. public static void main(string[] args) throws IOException { 5. Reader in = new FileReader(args[0]); 6. int totale = 0, spazi = 0, ch; while (in.read()!= -1) { 9. ++totale; 10. if (Character.isWhiteSpace((char)ch)) spazi; 12. } 13. System.out.pritln("spazi:"+spazi+ / +totale); 14. in.close(); 15. } 16. } 18

19 Writer 19 Writer append(char c) aggiunge il carattere specificato allo stream Writer append(charsequence csq) aggiunge i caratteri specificati nella sequenza allo stream Writer append(charsequence csq, int start, int end) aggiunge allo stream i caratteri specificati nella sotto-sequenza abstract void close() chiude lo stream dopo lo svuotamento abstract void flush() svuota lo stream void write(char[] cbuf) scrive un array di caratteri abstract void write(char[] cbuf, int off, int len) scrive una porzione di un array di caratteri void write(int c) scrive un carattere void write(string str) scrive una stringa void write(string str, int off, int len) scrive una porzione di una stringa

20 InputStreamReader OutputStreamWriter 20 Permettono la conversione da flusso caratteri Unicode a flusso di byte e viceversa: InputStreamReader(InputStream in) la sorgente in fornisce un flusso di byte che viene convertito in un flusso di caratteri char read() legge il prossimo carattere dal flusso di byte collegato OutputStreamWriter(OutputStream out) fornisce la conversione di un flusso di caratteri in un flusso di byte di destinazione out write(char c) scrive il carattere sul flusso di byte collegato

21 FileReader public FileReader(String nomefile) throws FileNotFoundException Crea un nuovo FileReader,, per leggere dal file il cui nome viene passato Parametri: nomefile nome del file da leggere Eccezioni: FileNotFoundException se il file specificato non esiste 21

22 Lettura 22 Per leggere caratteri da un file si crea un istanza FileReader FileReader(String nomefile) esempio: FileReader myreader = new FileReader( input.txt ); Per leggere sequenze di byte da un file si crea un istanza di FileInputStream FileInputStream(String nomefile) esempio: FileInputStream myinputstream = new FileInputStream( input.txt ); In entrambi i casi si utilizza il metodo int read() che legge un carattere / byte per volta e restituisce un valore di tipo int che corrisponde al codice del carattere / byte letto oppure 1 se non ci sono più dati da leggere

23 Copia di un File di Caratteri import java.io.*; public class CopiaCaratteri { 4. public static void main(string[] args) 5. throws IOException { 6. FileReader in = new FileReader(args[0]); 7. FileWriter out = new FileWriter(args[1]); 8. int c; while ((c = in.read())!= -1) 11. out.write(c) ; in.close(); 14. out.close(); 15. } 16. }

24 Copia di un File di Byte import java.io.*; public class CopiaByte { 4. public static void main(string[] args) 5. throws IOException { 6. FileInputStream in = new FileInputStream(args[0]); 7. FileOutputStream out = new FileOutputStream(args[1]); 8. int c; while ((c = in.read())!= -1) 11. out.write(c) ; in.close(); 14. out.close(); 15. } 16. }

25 Stream con Buffer 25 migliora le performance dell'i/o copia ogni input/output da/verso una regione di memoria detta buffer lettura/scrittura dell'intero buffer su disco in un'unica soluzione un'unica sessione di accesso a disco impiega meno di tanti piccoli accessi BufferedOutputStream file output bufferizzato BufferedInputStream file input bufferizzato

26 BufferedReader 26 Conente di gestire un flusso tramite un buffer (area di memoria) I dati vengono letti a blocchi dal flusso e memorizzati in un buffer. Quando viene richiesto un nuovo dato, prima si verifica la sua disponibilità nel buffer e, se non disponibile in memoria, si legge un nuovo blocco dal flusso Costruttori disponibili BufferedReader(Reader in) Crea un oggetto BufferedReader a partire da un oggetto Reader Metodi disponibili in aggiunta a quelli di Reader String readline() Legge una riga e la restituisce sotto forma di stringa

27 BufferedReader Lettura FileReader file = new FileReader( nome-file ); BufferedReader in = new BufferedReader(file); 27 oppure BufferedReader in = new BufferedReader(new FileReader( nome-file )); in.readline();

28 1. import java.io.*; 2. BufferedReader Esempio 3. public class TestLettura { 4. public static void main(string[] args) 5. throws IOException { 6. FileReader file = new FileReader(args[0]); 7. BufferedReader in = new BufferedReader(file); 8. String linea; 9. while ((linea = in.readline())!= null) 10. System.out.println(linea); in.close(); 13. } 14. } 28

29 Classe PrintWriter 29 La classe PrintWriter mette a disposizione i metodi void print() void println() utilizzabili con qualunque tipo di parametro (stringa, intero, reale, ecc.) Si può creare un nuovo oggetto PrintWriter a partire da un Writer,, in particolare da un FileWriter esempio: PrintWriter f = new PrintWriter( new FileWriter( nome-file ));

30 30 1. import java.io.*; 2. Scrittura su PrintWriter 3. public class TestCopia { 4. public static void main(string[] args) 5. throws IOException { 6. FileReader file = new FileReader(args[0]); 7. BufferedReader in = new BufferedReader(file); 8. String line; 9. PrintWriter out = new PrintWriter (new FileWriter(args[1])); 10. while ((line = in.readline())!= null) 11. out.println(line); in.close(); 14. out.close(); 15. } 16. }

31 Classe PrintStream 31 La classe PrintStream mette a disposizione i metodi void print() e void println() utilizzabili con qualunque tipo di parametro (stringa, intero, reale, ecc.) Si può creare un nuovo oggetto PrintStream a partire da un OutputStream,, in particolare da un FileOutputStream PrintStream f = new PrintStream(new FileOutputStream ( file.dat )); System.out e System.err sono di tipo PrintStream

32 32 1. import java.io.*; 2. Scrittura su PrintStream 3. public class TestCopia { 4. public static void main(string[] args) 5. throws IOException { 6. FileReader file = new FileReader(args[0]); 7. BufferedReader in = new BufferedReader(file); 8. String line; 9. PrintStream out = new PrintStream(new FileOutputStream(args[1])); 10. while ((line = in.readline())!= null) 11. out.println(line); in.close(); 14. out.close(); 15. } 16. }

33 Esempio 33 Uso degli Stream 1. import java.io.*; 2. public class TestLetturaVettore { 3. public static void main(string[] args) 4. throws IOException { 5. if (args.length < 1) System.exit(-1); 6. FileReader myfile = new FileReader(args[0]); 7. BufferedReader in = new BufferedReader(myFile); 8. int i = 0, v[] = new int[100], dim; 9. String linea; 10. while (i < 100 && (linea = in.readline())!= null){ 11. v[i] = Integer.parseInt(linea); 12. i++; 13. } 14. dim = i; 15. for(i=0; i<dim; i++) 16. System.out.println(v[i]); 17. in.close(); 18. } 19. }

34 Esempio public class VettoreInt { 2. private int v[] = new int[100], dim; 3. Uso di Stream 4. public void leggi(string nomefile) throws IOException { 5. FileReader file = new FileReader (nomefile); 6. BufferedReader in = new BufferedReader(file); 7. int i = 0; 8. String line; 9. while (i < 100 && (line = in.readline())!= null){ 10. v[i] = Integer.parseInt(line); 11. i++; 12. } 13. dim = i; 14. in.close(); 15. } // fine metodo leggi 16.

35 Esempio 35 Uso di Stream 1. public void stampa( String nomefile) throws IOException { 2. PrintWriter out = new PrintWriter(new FileWriter (nomefile)); 3. for(int i=0; i<dim; i++) 4. out.println(v[i]); 5. out.close(); 6. } // fine metodo stampa public static void main(string[] args) throws IOException { 9. if(args.length < 2) { 10. System.out.println("errore"); 11. System.exit (-1); 12. } 13. VettoreInt mydata = new VettoreInt (); 14. mydata.leggi(args[0]); 15. mydata.stampa(args[1]); 16. } // fine metodo main 17. } // fine classe

36 Classe System 36 Consente l accesso a risorse del sistema come lo standard output, allo standard input, ecc. Fornisce stream in (di tipo InputStream) ) associato allo standard input, stream out (di tipo PrintStream) ) associato all output e stream err associato allo standard error. Inoltre contiene alcuni metodi che svolgono diversi compiti, ad esempio: metodo exit(int status) interrompe l interpretazione del programma, ecc.

37 File di Record 37 Record composti da diversi campi implementabili come oggetti Java Un file può essere visto come un gruppo di record correlati Un campo di ogni record è la chiave file sequenziale record immagazzinati in ordine di chiave File di record in Java Java non impone alcuna struttura ai file Il programmatore dà una struttura ai file a seconda dell'applicazione

38 Record 38 Sally Tom Judy Iris Randy Black Blue Green Orange Red File codice ASCII J Judy Judy Green Campo Byte Record 1 Bit

39 File e Flussi Java vede i file come flussi di byte Un file termina con un marcatore di end- of-file File come flussi di byte associati ad oggetto Elaborazione file con le classi di java.io FileInputStream FileOutputStream FileReader FileWriter 39

40 File ad Accesso Sequenziale Aggiornamento Difficile aggiornare file ad accesso sequenziale L'intero file deve essere riscritto per cambiare un singolo campo Accettabile solo quando tanti record devono essere aggiornati alla volta 40

41 File ad Accesso Casuale 41 Applicazioni con accesso in tempo reale Record da collocare immediatamente Sistemi a transazioni: richiedono tempi rapidi d'accesso File ad accesso casuale (random) Si accede a record individuali in modo diretto e rapido lunghezza fissa per ogni record facilità di calcolo delle posizioni inserimento senza distruzione degli altri dati del file

42 File ad Acceso Casuale Schema offset in byte 100 byte 100 byte 100 byte 100 byte 100 byte 100 byte

43 RandomAccessFile RandomAccessFile(String n, String m) throws FileNotFoundException prima stringa: nome di file fisico seconda: modo di accesso lettura: modo read r Lancio IOException se in questa modalità non esiste il file o si tratta di una directory lettura e scrittura: modo rw. In modalità rw se non esiste lo crea, se esiste si predispone per le operazioni di lettura o scrittura ponendo il puntatore all inizio simile a DataInputStream e DataOutputstream legge/scrive dati in locazioni specificate dal puntatore di posizione nel file Manipola i dati come fossero di tipi primitivi Normalmente si scrive su file un oggetto per volta 43

44 RandomAccessFile 44 Metodi long length() Restituisce il numero di byte del file. void setlength(long newlength) Setta la lunghezza del file. se il file e più corto lo amplia, se più lungo lo tronca. In caso di riscrittura su un file esistente è necessario utilizzare questo metodo al termine della scrittura per inserire l eof. Nella forma setlength(getfilepointer()) long getfilepointer() Restituisce la posizione in byte del puntatore attuale void seek(long pos) Porta il puntatore sul byte di posizione indicata

45 RandomAccessFile void close() Chiude il file e libera la memoria heap long readlong() double readdouble() Legge un dato e trasla il puntatore di una quantità pari al numero di byte binari occupati dal tipo di dato. La lettura produce un EOFException quando incontra il termine del File String readline() in scrittura è a carico del programmatore aggiungere un carattere di fine linea \r o \n o entrambi. Legge tutti i caratteri fino al marcatore di fine linea \r o \n Se il puntatore è a EOF la stringa acquisita è null. In ogni caso si produce un EOFException

46 RandomAccessFile void writeint(int) void writelong(long) void writedouble(double) void writefloat(float) void writebyte(int) void writeboolean(boolean) void writechar(int) Scrive il dato indicato e trasla il puntatore. void writebytes(string) void writechars(string) Scrive tutti i byte di una stringa in formato dipendente dalla macchina.

47 Persistenza degli Oggetti 47 Possibilità di immagazzinare e recuperare oggetti anche complessi Gli oggetti vengono immagazzinati in uno stream Bisogna decidere un certo protocollo di memorizzazione. Si codificano tali caratteristiche usando le stringhe ed usando numeri Le cose sono difficili se la struttura dati è complessa: Occorre implementare due metodi di conversione della struttura in forma sequenziale, salvarla per poi ripristinarla, ricostruendo la struttura originaria Due soluzioni: serializzazione esternalizzazione

48 Serializable Serializzazione Interfaccia che deve essere realizzata dagli oggetti da serializzare L oggetto serializzato contiene tutta l informazione necessaria per verificare la sua classe per ricostruirne l istanza L operazione di memorizzazione di oggetti in un flusso viene detta Serializzazione Ogni oggetto riceve un numero di serie: Se lo stesso oggetto viene salvato due volte, la seconda volta ne viene salvato solo il numero di serie Se in un flusso si incontra più volte lo stesso numero di serie, questi vengono interpretati come riferimenti allo stesso oggetto 48

49 Externalizable Esternalizzazione Interfaccia che deve essere realizzata dagli oggetti da esternalizzare Realizza l interfaccia Serializable ma l oggetto esternalizzabile è l unico responsabile del formato esterno dei suoi contenuti 49

50 Interfaccia Serializable 50 Se un oggetto implementa l interfaccia Serializable, esso è serializzabile cioè può essere reso persistente e poi ripristinato La cosa importante è che l oggetto ripristinato abbia le stesse proprietà dell oggetto salvato possibilità di definire alcune proprietà come transient: viene salvata l istanza ma in fase di ripristino i suoi campi assumono i loro valori di default Supponendo di avere una classe di nome Struttura, per renderla serializzabile basterà scrivere: public class Struttura implements Serializable {... }

51 Serializzazione di Oggetti 51 ObjectOutput Interfaccia: un contenitore in cui possono essere immagazzinati oggetti writeobject(object o) writeint(), writefloat (),... flush() ObjectOutputStream Realizza l interfaccia ObjectOutput Costruita a partire da un OutputStream ObjectInput Interfaccia: un contenitore da cui possono essere recuperati oggetti Object readobject() readint(), readfloat (),... ObjectInputStream Realizza l interfaccia ObjectInput Costruita a partire da un InputStream

52 Serializzazione Esempio public void scrivi () { try { s = new ObjectOutputStream(new FileOutputStream("save.ser")); s.writeobject(salvato); s.close(); } catch (IOException ioe) { System.out.println ("Errore:"+ioe.toString()); } } public void leggi () { try { s = new ObjectInputStream(new FileInputStream("save.ser")); salvato = (TipoSalvato)(s.readObject()); s.close(); } catch (IOException ioe) { System.out.println("Errore:"+ioe.toString()); } } 52

53 Nuove API I/O di Java Consolidamento delle operazioni di I/O 4 proprietà: Capacity Limit Position Mark Operazioni di put & get Relative o assolute clear, flip, rewind, reset Buffer 53

54 Nuove API I/O di Java Connessione a dispositivi per l'i/o Interazione efficiente con buffer interfaccia ReadableByteChannel Metodo read interfaccia WriteableByteChannel Metodo write lettura sparsa e scrittura raccolta Classe FileChannel Canali 54

55 Nuove API I/O di Java 55 File Lock Pone restrizioni all'accesso di una porzione di file FileChannel,, posizione, dimensione esclusivo o condiviso Charset Package java.nio.charset Class Charset Metodi decode, encode Class CharsetDecoder, CharsetEncoder

56 FileChannelTest // FileChannelTest.java 2. import java.io.*; 3. import java.nio.*; 4. import java.nio.channels.*; public class FileChannelTest { 7. private FileChannel filechannel; public FileChannelTest() { 10. try { 11. RandomAccessFile file = new RandomAccessFile( "Test", "rw" ); 12. filechannel = file.getchannel(); 13. } catch ( IOException ioexception ) { 14. ioexception.printstacktrace(); 15. } } // end costruttore

57 FileChannelTest continua 1. public void writetofile() throws IOException { 2. ByteBuffer buffer = ByteBuffer.allocate ( 14 ); buffer.putint( 100 ); 5. buffer.putchar( 'A' ); 6. buffer.putdouble( ); buffer.flip(); 9. filechannel.write( buffer ); 10. } 57

58 FileChannelTest continua 1. public void readfromfile() throws IOException { 2. String content = ""; 3. ByteBuffer buffer = ByteBuffer.allocate( 14 ); 4. filechannel.position( 0 ); 5. filechannel.read( buffer ); buffer.flip(); content += buffer.getint() + ", " + buffer.getchar() + "," + buffer.getdouble(); System.out.println( "File contains: " + content ); filechannel.close(); 14. } // end readfromfile

59 1. public static void main( String[] args ) { 2. FileChannelTest application = new FileChannelTest(); try { 5. application.writetofile(); 6. application.readfromfile(); 7. } 8. catch ( IOException ioexception ) { 9. ioexception.printstacktrace(); 10. } 11. } // metodo 12. FileChannelTest 13. } // end class FileChannelTest continua 59

60 StringTokenizer 60 La classe StringTokenizer è definita nel package java.util Un oggetto StringTokenizer separa una stringa in sottostringhe dette token Per default, il tokenizer separa la stringa ad ogni spazio Il costruttore di StringTokenizer richiede come parametro la stringa da separare. Ciascuna chiamata al metodo nexttoken() restituisce il token successivo

61 Classe StringTokenizer 61 Costruttori StringTokenizer(String str) Costruisce un tokenizer per la stringa specificata. StringTokenizer(String str, String delim) Constructs a string tokenizer for the specified string Metodi int counttokens() Calcola il numero di volte che il metodo nexttoken() del tokenizerpuò essere chiamato prima di generare un eccezione boolean hasmoretokens() Testa se ci sono ancora token nella stringa da analizzare String nexttoken() restituisce il prossimo token dalla stringa in esame

62 Esempio Uso di StringTokenizer 1. import java.io.*; 2. import java.util.*; 3. public class testletturatoken { 4. public static void main(string[] args) 5. throws IOException { 6. FileReader file = new FileReader(args[0]); 7. BufferedReader in = new BufferedReader(file); 8. String linea; 9. while ((linea = in.readline())!= null) { 10. StringTokenizer st = new StringTokenizer(linea); 11. while(st.hasmoretokens()) 12. System.out.println(st.nextToken()); 13. } 14. in.close(); 15. } // metodo 16. } // classe 62

A. Ferrari Java: Stream e File

A. Ferrari Java: Stream e File Java: Stream e File la classe File o per operare con l intero file java mette a disposizione la classe File o per utilizzare la classe File è necessario importare la libreria java.io.file o la classe File

Dettagli

INPUT OUTPUT Programmazione in rete e laboratorio. Le operazioni di I/O avvengono attraverso stream (sequenze di byte)

INPUT OUTPUT Programmazione in rete e laboratorio. Le operazioni di I/O avvengono attraverso stream (sequenze di byte) INPUT OUTPUT 2004-05 Le operazioni di I/O avvengono attraverso stream (sequenze di byte) programma stream in lettura sorgente Programmazione in rete e laboratorio programma stream in scrittura destinazione

Dettagli

Programmazione ad Oggetti

Programmazione ad Oggetti Programmazione ad Oggetti Java File Flussi e file Flusso (stream) = sequenza di dati di input: da cui leggere di output: su cui scrivere I file sono visti come flussi di dati Il package java.io definisce

Dettagli

Lettura e scrittura - Stream

Lettura e scrittura - Stream Lettura e scrittura - Stream Obiettivo(fine della lezione): leggere/scrivere da/su file (e quindi verso qualsiasi dispositivo) Tipi di stream Stream di caratteri Stream di byte Classi astratte che implementano

Dettagli

A. Ferrari Stream e File

A. Ferrari Stream e File Stream e File Java la classe File o per operare con l intero file java mette a disposizione la classe File o per utilizzare la classe File è necessario importare la libreria java.io.file o la classe File

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA6 A2 I file binari 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Modello produttore consumatore Operazioni logiche su struttura file 2 1 Introduzione

Dettagli

LETTURA DI DATI DA INPUT

LETTURA DI DATI DA INPUT LETTURA DI DATI DA INPUT Gli stream di byte consentono già di leggere dati (numeri di vario tipo), tramite la classe DataInputStream FileDescriptor InputStream SequenceInputStream ByteArrayInputStream

Dettagli

JAVA - I/O System. Il JAVA considera tutte i flussi da e verso l esterno, come stream di byte. Questi possono essere di ingresso o di uscita:

JAVA - I/O System. Il JAVA considera tutte i flussi da e verso l esterno, come stream di byte. Questi possono essere di ingresso o di uscita: JAVA - I/O System Il JAVA considera tutte i flussi da e verso l esterno, come stream di byte. Questi possono essere di ingresso o di uscita: 1. InputStream: Flusso di byte in ingresso. Con questa classe

Dettagli

INPUT OUTPUT

INPUT OUTPUT INPUT OUTPUT Il package java.io include classi, interfacce ed eccezioni per la gestione dellʼi/o. Si può distinguere tra due classi di funzionalità: per leggere e scrivere dati (anche in maniera indipendente

Dettagli

Informatica. Prof. A. Longheu. Input e Output

Informatica. Prof. A. Longheu. Input e Output Informatica Prof. A. Longheu Input e Output 1 Il package java.io Il package java.io definisce i concetti base per gestire l I/O da qualsiasi sorgente e verso qualsiasi destinazione. L obiettivo è fornire

Dettagli

Java I/O e serializzazione

Java I/O e serializzazione Java I/O e serializzazione Caratteristiche dell I/O in Java Diverse classi per gestire I/O differenti sotto un unica struttura. Possibilità di combinare classi differenti. Modalità di interazione distinte

Dettagli

La paninoteca. Mi resta da scrivere solo costo()

La paninoteca. Mi resta da scrivere solo costo() La paninoteca Mi resta da scrivere solo costo() La paninoteca Usiamo l ereditarietà per definire dei Panini particolari Ci sono alcuni tipi di pane Estendendo Panino scrivo meno codice Nell esempio eredito

Dettagli

02CBI - M. Morisio. I/O in Java. Input Output. Classi di Primo Livello - java.io. Stream. Pag. 1

02CBI - M. Morisio. I/O in Java. Input Output. Classi di Primo Livello - java.io. Stream. Pag. 1 Input Output I/O in Java Stream Buffer File StringTokenizer, StreamTokenizer Serializzazione Stream Stream Tutte le operazioni di I/O si riferiscono all astrazione dello STREAM (flusso di byte) Uno stream

Dettagli

Java I/O e serializzazione

Java I/O e serializzazione Java I/O e serializzazione Caratteristiche dell I/O in Java Diverse classi per gestire I/O differenti sotto un unica struttura. Possibilita di combinare classi differenti. Modalita di interazione distinte

Dettagli

Lettura e scrittura - Stream

Lettura e scrittura - Stream Lettura e scrittura - Stream Obiettivo(fine della lezione): leggere/scrivere da/su file (e quindi verso qualsiasi dispositivo)! Tipi di stream " Stream di caratteri " Stream di byte! Classi astratte che

Dettagli

Input/Output in Java

Input/Output in Java Input/Output in Java 1 Comunicare con il mondo Praticamente ogni programma ha la necessità di comunicare con il mondo esterno Con l utente attraverso tastiera e video Con il file system per leggere e salvare

Dettagli

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Ingegneria del software A Input/output (in Java) Michele Tomaiuolo Eccezione Un eccezione è

Dettagli

Lezione 16 programmazione in Java

Lezione 16 programmazione in Java Lezione 16 programmazione in Java Nicola Drago drago@sci.univr.it Dipartimento di Informatica Università di Verona Anteprima Approfondimenti della programmazione OO I FILE Sgli stream (flussi) I file ad

Dettagli

Il linguaggio Java. Gli stream

Il linguaggio Java. Gli stream Il linguaggio Java Gli stream Overview Uno stream è un flusso unidirezionale di informazioni da una sorgente esterna ovvero verso una sorgente esterna a cui si accede in modo sequenziale 2 Algoritmi di

Dettagli

Esercitazione n 4. Capacità di analisi e di estensione di progetti esistenti Il concetto di filtro Linguaggio Java:

Esercitazione n 4. Capacità di analisi e di estensione di progetti esistenti Il concetto di filtro Linguaggio Java: Esercitazione n 4 Obiettivi: Capacità di analisi e di estensione di progetti esistenti Il concetto di filtro Linguaggio Java: Gestione di input/output da console e da file (package java.io) Utilizzo di

Dettagli

Il package java.io fornisce le classi necessarie per effettuare input e output su file/rete/console/aree di memoria RAM eccetera.

Il package java.io fornisce le classi necessarie per effettuare input e output su file/rete/console/aree di memoria RAM eccetera. IL PACKAGE JAVA.IO Il package java.io fornisce le classi necessarie per effettuare input e output su file/rete/console/aree di memoria RAM eccetera. Il package può essere classificato secondo vari punti

Dettagli

I/O Streams in Java. Lorenzo Gallucci

I/O Streams in Java. Lorenzo Gallucci I/O Streams in Java Lorenzo Gallucci I/O Streams La libreria Java dispone di un API sofisticata per l interfacciamento I/O Il package di riferimento è java.io Due classi principali InputStream, per l input

Dettagli

Le classi FileInputStream e RandomAccessFile. Semplici Algoritmi di Ordinamento

Le classi FileInputStream e RandomAccessFile. Semplici Algoritmi di Ordinamento Fondamenti di Informatica Le classi FileInputStream e RandomAccessFile Semplici Algoritmi di Ordinamento Fondamenti di Informatica - D. Talia - UNICAL 1 Classe FileInputStream La classe FileInputStream

Dettagli

Java I/O API. Java I/O. G. Grossi. 10 gennaio G. Grossi Lezione 11

Java I/O API. Java I/O. G. Grossi. 10 gennaio G. Grossi Lezione 11 Java I/O G. Grossi 10 gennaio 2007 Indice 1 Java I/O API Il sistema I/O: questioni generali Creare un buon sistema I/O è uno dei compiti più difficili per i progettisti di linguaggi Questo fatto è evidenziato

Dettagli

Fondamenti di Informatica C Esercitazioni di Laboratorio / 4 Outline

Fondamenti di Informatica C Esercitazioni di Laboratorio / 4  Outline Fondamenti di Informatica C Esercitazioni di Laboratorio / 4 http://polaris.ing.unimo.it/fic/laboratorio.html Ing. Francesco De Mola demola.francesco@unimore.it DII, Modena Via Vignolese (lab. Dottorandi

Dettagli

Indice. 1 Java I/O API. Indice

Indice. 1 Java I/O API. Indice Indice Indice 1 Java I/O API 1 1.1 Flussi di byte in input/output....................................... 2 1.2 Leggere e scrivere su file......................................... 4 1.3 Flussi di caratteri

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Eccezioni: Gestione dei Flussi versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

Input/Output in Java

Input/Output in Java Corso Java Input/Output in Java Docente: Dott. Marco Bianchi Slide realizzate da Ing. A.Bei, Dott. M.Bianchi, Dott. F.Lombardi Input/Output in Java Per effettuare operazioni di I/O in Java è possibile

Dettagli

Riassunto. Rassegna API - 2: eccezioni e file. Eccezioni. Oggi. Gettare, catturare, rimbalzare. Gettare. Stefano Mizzaro 1

Riassunto. Rassegna API - 2: eccezioni e file. Eccezioni. Oggi. Gettare, catturare, rimbalzare. Gettare. Stefano Mizzaro 1 Rassegna API - 2: eccezioni e file Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@dimi.uniud.it Programmazione, lezione 21 Riassunto

Dettagli

Informatica I. Ingegneria Medica. Prof. Diego Salamon

Informatica I. Ingegneria Medica. Prof. Diego Salamon Informatica I Ingegneria Medica Prof. Diego Salamon Gestione I/O Prof. Diego Salamon Introduzione Nella creazione e gestione del software è necessario interagire con entità esterne a quelle del programma

Dettagli

Riassunto. Rassegna API - 2: eccezioni e file. Eccezioni. Oggi. Gettare. Gettare, catturare, rimbalzare. Stefano Mizzaro 1

Riassunto. Rassegna API - 2: eccezioni e file. Eccezioni. Oggi. Gettare. Gettare, catturare, rimbalzare. Stefano Mizzaro 1 Rassegna API - 2: eccezioni e file Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 18,19 15,19/11/2013

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA6 A1 I file testo 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Modello produttore consumatore Operazioni logiche su struttura file 2 1 Introduzione

Dettagli

Jav@Lab Il linguaggio Java I file sequenziali

Jav@Lab Il linguaggio Java I file sequenziali Jav@Lab Il linguaggio Java I file sequenziali Input e Output Secondo i canoni dei linguaggi di programmazione "procedurali" il concetto di input e output è strettamente legato al tipo di dispositivo esterno

Dettagli

LETTURA DI DATI DA INPUT. Gli stream di byte consentono già di leggere dati (numeri di vario tipo), tramite la classe DataInputStream

LETTURA DI DATI DA INPUT. Gli stream di byte consentono già di leggere dati (numeri di vario tipo), tramite la classe DataInputStream LETTURA DI DATI DA INPUT Gli stream di byte consentono già di leggere dati (numeri di vario tipo), tramite la classe DataInputStream LETTURA DI DATI DA INPUT Sfortunatamente, una tale classe non esiste

Dettagli

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Variabili di classe: Static Una variabile di classe

Dettagli

File e Stream In Java. Prof. Francesco Accarino IIS Sesto San Giovanni Via Leopardi 132

File e Stream In Java. Prof. Francesco Accarino IIS Sesto San Giovanni Via Leopardi 132 File e Stream In Java Prof. Francesco Accarino IIS Sesto San Giovanni Via Leopardi 132 Lettura da e scrittura su file Java fornisce operazioni di input/output tramite le classi del package java.io. La

Dettagli

Variabili e Metodi di classe Interfacce e Package File in Java

Variabili e Metodi di classe Interfacce e Package File in Java Fondamenti di Informatica Variabili e Metodi di classe Interfacce e Package File in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Variabili di classe: Static Una variabile di classe definisce un

Dettagli

Laboratorio Reti di Calcolatori Laurea Triennale in Comunicazione Digitale. Anno Accademico 2012/2013

Laboratorio Reti di Calcolatori Laurea Triennale in Comunicazione Digitale. Anno Accademico 2012/2013 Laboratorio Reti di Calcolatori Laurea Triennale in Comunicazione Digitale Anno Accademico 2012/2013 Streams Maggior parte della programmazione di rete è eseguire operazione di input e output. Sposto byte

Dettagli

10. File e loro attributi

10. File e loro attributi Appunti java pag. 133 10. File e loro attributi In generale, in qualsiasi sistema operativo, il file system consente di operare su archivi di dati (data files) che possono essere organizzati e memorizzati

Dettagli

domenica 9 giugno 13 Serializzazione

domenica 9 giugno 13 Serializzazione Serializzazione A cosa serve? Ad ottenere una rappresentazione di una struttura dati che possiamo memorizzare, trasmettere via rete Cosa possiamo serializzare? OK NO Tipi primitivi, Riferimenti stringhe

Dettagli

Gestione di file in Java

Gestione di file in Java CAPITOLO 17 Gestione di file in Java Ogni insieme di informazioni residenti su memoria di massa costituisce in Java un flusso di dati che è denominato stream. Più in particolare un input stream costituisce

Dettagli

IL PACKAGE java.io CONCETTO BASE: LO STREAM

IL PACKAGE java.io CONCETTO BASE: LO STREAM IL PACKAGE java.io Il package java.io definisce i concetti base per gestire l'i/o da qualsiasi sorgente e verso qualsiasi destinazione. CONCETTO BASE: LO STREAM Uno stream è un canale di comunicazione

Dettagli

Introduzione. Java. Streams. Streams

Introduzione. Java. Streams. Streams Java il sistema di I/O G. Prencipe prencipe@di.unipi.it Introduzione La gestione del sistema di I/O è una parte fondamentale di qualsiasi linguaggio di programmazione In questa lezione approfondiremo la

Dettagli

IL PACKAGE java.io. Il package java.io definisce i concetti base per gestire l'i/o da qualsiasi sorgente e verso qualsiasi destinazione.

IL PACKAGE java.io. Il package java.io definisce i concetti base per gestire l'i/o da qualsiasi sorgente e verso qualsiasi destinazione. IL PACKAGE java.io Il package java.io definisce i concetti base per gestire l'i/o da qualsiasi sorgente e verso qualsiasi destinazione. CONCETTO BASE: LO STREAM Uno stream è un canale di comunicazione

Dettagli

Flussi, lettori e scrittori

Flussi, lettori e scrittori Flussi, lettori e scrittori Per sequenze di byte, InputStream, OutputStream e loro sottoclassi. Es: InputStream in = ; int next = in. read(); if (next!= -1) byte b = (byte) next; Per sequenze di caratteri,

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA8 B2 Accesso diretto 1 Prerequisiti Programmazione ad oggetti Conoscenza classi di base di I/O Tecnica della programmazione Organizzazione ed accesso ai file 2 1 Introduzione

Dettagli

FileInputStream read() read(byte[]) readint() DataInputStream FileInputStream EOFException

FileInputStream read() read(byte[]) readint() DataInputStream FileInputStream EOFException ESERCITAZIONE 9 I/O Esercizio 1 Lettura da file binario Se gli interi letti appartengono a [-5;5] scrittura su un altro file binario Altrimenti sollevare una eccezione la quale stampa a video un messaggio

Dettagli

Unità 2 I file binari

Unità 2 I file binari Dare una breve descrizione dei termini introdotti: (A) CONOSCENZA TERMINOLOGICA file binari file di tipi primitivi file di oggetti serializzazione (B) CONOSCENZA E COMPETENZA Rispondere alle seguenti domande

Dettagli

Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B

Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B Università di Ferrara Dipartimento di Ingegneria Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B Tutor Arnaud Nguembang Fadja: ngmrnd@unife.it Damiano Azzolini: damiano.azzolini@student.unife.it Esercizio

Dettagli

Note ed esercizi aggiuntivi

Note ed esercizi aggiuntivi Corso di Programmazione Anno Accademico 2015 2016 Prof. Giovanni Pighizzini ed esercizi aggiuntivi 16. Stream di I/O Esempio. Visualizza sul monitor il contenuto di un file di caratteri. int i; while ((i

Dettagli

Laboratorio di reti I: Java IO

Laboratorio di reti I: Java IO Laboratorio di reti I: Java IO Stefano Brocchi brocchi@dsi.unifi.it 15 ottobre, 2008 Stefano Brocchi Laboratorio di reti I: Java IO 15 ottobre, 2008 1 / 28 Gli InputStream e gli OutputStream Gli stream

Dettagli

ESERCIZIO 1 (FILE DI TESTO)

ESERCIZIO 1 (FILE DI TESTO) ESERCIZIO 1 (FILE DI TESTO) Scrivere su un file di testo righe inserite da console, fino a quando non viene inserita la linea vuota. Passare il nome del file come parametro al programma. Bisogna incapsulare

Dettagli

Creazione, eliminazione, lettura e scrittura di file di testo

Creazione, eliminazione, lettura e scrittura di file di testo Creazione, eliminazione, lettura e scrittura di file di testo Creazione Java mette a disposizione degli sviluppatori diverse classi per lavorare con i file di testo, analizziamo le principali: java.io.file

Dettagli

Java. Il package java.io

Java. Il package java.io Java Il package java.io Flussi e canali I flussi permettono operazioni di I/O bloccanti (java.io) I canali permettono operazione di I/O oltre che bloccanti anche operazioni non bloccanti (java.nio) 1 IL

Dettagli

LETTURA E SCRITTURA DI FILE

LETTURA E SCRITTURA DI FILE LETTURA E SCRITTURA DI FILE (slide: A. Baratè L.A. Ludovico) Programmazione per la Musica Adriano Baratè LA CLASSE FILE La classe File fornisce una rappresentazione astratta del percorso (pathname) di

Dettagli

Gestione dell I/O su File

Gestione dell I/O su File Fondamenti di Informatica Prof. Alfredo Cuzzocrea University of Trieste Gestione dell I/O su File Credits to: Prof. L. Badia UniPD Lettura da e scrittura su file Java fornisce operazioni di input/output

Dettagli

Comunicare'con'il'mondo

Comunicare'con'il'mondo PACKAGE'DI'I/O Do#.%PhD%Denis%Ferrare/% denis.ferrare*@unife.it Comunicare'con'il'mondo Pra$camente*ogni*programma*ha*la*necessità*di*comunicare*con*il* mondo*esterno *Con*l utente*a7raverso*tas$era*e*video

Dettagli

789:;<:' .&+/"0&12%34%5&66+,("%3787%% %"+&%88$77%9%8:$:7%% ;<'&12%8%=,+>"%3787 % % % %"+&%88$77%9%8:$:7%

789:;<:' .&+/0&12%34%5&66+,(%3787%% %+&%88$77%9%8:$:7%% ;<'&12%8%=,+>%3787 % % % %+&%88$77%9%8:$:7% !"#$"%&'()')*+'!"#$%!&'()%*&++,+&-%%!"#$%&'"(()("*+,#$'"&$-. 789:;"%3787 % % % %"+&%88$77%9%8:$:7%?("'(%)"'"%'&0% 0,6"+,@"+("%1(%A'5"+=,B/,%C+,'1&$%

Dettagli

Programmazione 2. Input Output su Stream e File

Programmazione 2. Input Output su Stream e File Programmazione 2 Input Output su Stream e File Stream In generale ogni programma ha un flusso (stream) di dati in input ed uno in output. Stream di input Stream di output Input/Output in Java Il package

Dettagli

Creazione, eliminazione, lettura e scrittura di file di testo

Creazione, eliminazione, lettura e scrittura di file di testo Creazione, eliminazione, lettura e scrittura di file di testo Java mette a disposizione degli sviluppatori diverse classi per lavorare con i file di testo, analizziamo le principali: java.io.file La classe

Dettagli

PROVA FINALE Ingegneria del software

PROVA FINALE Ingegneria del software PROVA FINALE Ingegneria del software Jody Marca jody.marca@polimi.it Laboratorio N 2 Cosa faremo oggi 2 Javadocs Uso del debugger Input Output Serializzazione degli oggetti Javadoc 3 Javadoc è uno strumento

Dettagli

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A lezione 09 - I/O in Java. Il package java.io

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A lezione 09 - I/O in Java. Il package java.io Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it - lezione 09 - I/O in Java 1 Il package

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica (L-Z) Corso di Laurea in Ingegneria Gestionale OOP: I/O da/su File e Java Exceptions Prof. Stefano Mariani Dott. Alket Cecaj Indice I/O da/su file: java.io e java.nio BufferedReader

Dettagli

argomen> PACKAGE DI I/O Gli STREAM: conce0 di base STREAM di byte STREAM di cara8eri Ges9one di File (classe File) Serializzazione 02/11/14

argomen> PACKAGE DI I/O Gli STREAM: conce0 di base STREAM di byte STREAM di cara8eri Ges9one di File (classe File) Serializzazione 02/11/14 PACKAGE DI I/O argomen> Gli STREAM: conce0 di base STREAM di byte STREAM di cara8eri Ges9one di File (classe File) Serializzazione 1 conce@o base: gli stream I programmi in JAVA comunicano (cioè effe8uano

Dettagli

Principi, Modelli e Applicazioni per Sistemi Distribuiti M

Principi, Modelli e Applicazioni per Sistemi Distribuiti M Università degli Studi di Bologna Facoltà di Ingegneria Principi, Modelli e Applicazioni per Sistemi Distribuiti M Esercitazione 2 (svolta) Socket Java con connessione Alessandro Pernafini Architettura

Dettagli

L input da tastiera in Java. Dott. Ing. M. Banci, PhD

L input da tastiera in Java. Dott. Ing. M. Banci, PhD L input da tastiera in Java Dott. Ing. M. Banci, PhD La lettura di un flusso di input in Java avviene attraverso l'oggetto in della classe System. System.in appartiene alla classe InputStream (letteralmente

Dettagli

La Serializzazione in Java. L24_Serialization 1

La Serializzazione in Java. L24_Serialization 1 La Serializzazione in Java L24_Serialization 1 La Serialization è la trasformazione di un oggetto in memoria in una sequenza di byte (ospitata in un file, trasmessa in rete, ecc). La Deserialization è

Dettagli

PACKAGE DI I/O. Dott. Riccardo Zese.

PACKAGE DI I/O. Dott. Riccardo Zese. PACKAGE DI I/O Dott. Riccardo Zese riccardo.zese@unife.it Comunicare con il mondo Praticamente ogni programma ha la necessità di comunicare con il mondo esterno Con l utente attraverso tastiera e video

Dettagli

Il sistema I/O di Java

Il sistema I/O di Java Programmazione Java:. Il sistema I/O di Java romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Stream I/O Gestione di stream byte oriented Filtri Gestione di stream char oriented

Dettagli

Input/Output. Introduzione. Stream. Capitolo 10 LORENZO BETTINI

Input/Output. Introduzione. Stream. Capitolo 10 LORENZO BETTINI Capitolo 10 Input/Output LORENZO BETTINI Introduzione In questo capitolo verrà illustrato il package java.io, che supporta il sistema fondamentale di input/output (I/O) di Java. Nei programmi Java vengono

Dettagli

Eccezioni Precisazioni e approfondimenti

Eccezioni Precisazioni e approfondimenti Eccezioni Precisazioni e approfondimenti Costruttore: il parametro String definisce il messaggio di errore associato all eccezione Metodi particolarmente significativi getmessage(): ritorna l istanza di

Dettagli

RETI DI CALCOLATORI Linguaggio Java: Il Package di Input Output

RETI DI CALCOLATORI Linguaggio Java: Il Package di Input Output Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria CORSO DI RETI DI CALCOLATORI Linguaggio Java: Il Package di Input Output Prof. Franco Zambonelli Lucidi realizzati in collaborazione

Dettagli

Lettura e scrittura di dati

Lettura e scrittura di dati Il package java.io Lettura e scrittura di dati I dati possono provenire/essere inviati su molte sorgenti/destinazioni Memoria Dischi Rete In ogni caso un uno stream sorgentre/streeam destinazione deve

Dettagli

Java: la libreria delle classi

Java: la libreria delle classi Java: la libreria delle classi Input/Output in Java il package java.io object serialization La programmazione di rete i package java.net e java.rmi 149 Approccio generale La libreria delle classi Java

Dettagli

Input. Il tipo char Alcune modalità di acquisizione di input. Laboratorio di Programmazione - Luca Tesei

Input. Il tipo char Alcune modalità di acquisizione di input. Laboratorio di Programmazione - Luca Tesei Input Il tipo char Alcune modalità di acquisizione di input 1 Lettura di dati in input Vediamo due modi per acquisire dei dati di input dall utente: 1. Tramite una finestra grafica di dialogo 2. Tramite

Dettagli

Input e Output in Java

Input e Output in Java Input e Output in Java Stream Redirecting Scomposizione dell input Uso di file Set di caratteri 1 Inserimento dati e test Riconsideriamo la versione iniziale della classe DataSet usata per illustrare le

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA8 B1 Accesso sequenziale 1 Prerequisiti Programmazione ad oggetti Conoscenza classi di base di I/O Tecnica della programmazione 2 1 Introduzione In questa Unità vediamo

Dettagli

Il package java.io definisce i concetti base per gestire l'i/o da qualsiasi sorgente e verso qualsiasi destinazione. CONCETTO BASE: LO STREAM

Il package java.io definisce i concetti base per gestire l'i/o da qualsiasi sorgente e verso qualsiasi destinazione. CONCETTO BASE: LO STREAM IL PACKAGE java.io Il package java.io definisce i concetti base per gestire l'i/o da qualsiasi sorgente e verso qualsiasi destinazione. CONCETTO BASE: LO STREAM Uno stream è un canale di comunicazione

Dettagli

Linguaggi. I/O in Java. - lezione 09 - Corso di Laurea in Ingegneria delle Telecomunicazioni A.A

Linguaggi. I/O in Java. - lezione 09 - Corso di Laurea in Ingegneria delle Telecomunicazioni A.A Linguaggi Corso di Laurea in Ingegneria delle Telecomunicazioni A.A. 2010-2011 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it - lezione 09 - I/O in Java 1 Il

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA6 A1 I file testo 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Modello produttore consumatore Operazioni logiche su struttura file 2 1 Introduzione

Dettagli

Input/Output in Java. Fondamenti di Informatica L-B

Input/Output in Java. Fondamenti di Informatica L-B Input/Output in Java Comunicare con il mondo Praticamente ogni programma ha la necessità di comunicare con il mondo esterno Con l utente attraverso tastiera e video Con il file system per leggere e salvare

Dettagli

Interfaccia Comparable. Fondamenti di Informatica L-B Esercitazione n 5 Java: Comparable, Array. Come sfrutto Comparable?

Interfaccia Comparable. Fondamenti di Informatica L-B Esercitazione n 5 Java: Comparable, Array. Come sfrutto Comparable? Fondamenti di Informatica L-B Esercitazione n 5 Java: Comparable, Array A.A. 2005/06 Tutor: Loris Cancellieri loris.cancellieri@studio.unibo.it Interfaccia Comparable class Contatore implements Comparable

Dettagli

Programmazione distribuita in Java. Socket & Client-Server

Programmazione distribuita in Java. Socket & Client-Server Programmazione distribuita in Java Socket & Client-Server 1 Strumenti per networking Libreria java.net Socket (Astrazione per una presa di comunicazione) Serializzazione Socket Per comunicare si apre una

Dettagli

Le basi del linguaggio Java

Le basi del linguaggio Java Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una

Dettagli

20 - Input/Output su File

20 - Input/Output su File 20 - Input/Output su File Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

Serializzazione. Programmazione in Ambienti Distribuiti A.A

Serializzazione. Programmazione in Ambienti Distribuiti A.A Serializzazione Programmazione in Ambienti Distribuiti A.A. 2003-04 Messaggi La comunicazione tra due entità remote richiede la comprensione dei messaggi scambiati Occorre specificarne il formato: A livello

Dettagli

Concetto di file Metodi d accesso Struttura della directory Montaggio di un file system Condivisione di file Protezione

Concetto di file Metodi d accesso Struttura della directory Montaggio di un file system Condivisione di file Protezione Capitolo 10: Interfaccia del file system Capitolo 10: Interfaccia del file system Concetto di file Metodi d accesso Struttura della directory Montaggio di un file system Condivisione di file Protezione

Dettagli

File, flussi e pacchetto java.io

File, flussi e pacchetto java.io File, flussi e pacchetto java.io Formato binario e formato di testo I dati sono memorizzati nei files in due formati: testo (successione di caratteri) binario (successione di bytes) Ad es. numero 12345

Dettagli

PROVA FINALE Ingegneria del software

PROVA FINALE Ingegneria del software PROVA FINALE Ingegneria del software Ing. Jody Marca jody.marca@polimi.it Laboratorio N 5 Cosa faremo oggi 2 Comunicazione tramite TCP socket Comunicazione tramite UDP socket RIPASSO: Input Output 3 In

Dettagli

Prof. D. Malerba Dr. A. Appice - Dr. M.Ceci. Il sistema Input/Output di Java

Prof. D. Malerba Dr. A. Appice - Dr. M.Ceci. Il sistema Input/Output di Java Il sistema Input/Output di Java 1 Il sistema Input/Output di Java La libreria standard di Java offre una vasta gamma di classi per la gestione dell I/O. Queste permettono di gestire tanto un collegamento

Dettagli

Un flusso (stream) è una astrazione che produce e/o consuma informazioni.

Un flusso (stream) è una astrazione che produce e/o consuma informazioni. I programmi Java eseguono l I/O mediante i flussi. Un flusso (stream) è una astrazione che produce e/o consuma informazioni. Ogni flusso è collegato ad un dispositivo fisico dal sistema di I/O di java.

Dettagli

Note ed esercizi aggiuntivi

Note ed esercizi aggiuntivi Corso di Programmazione Anno Accademico 2015 2016 Prof. Giovanni Pighizzini ed esercizi aggiuntivi Gli esercizi proposti sono utili per rivedere gli esempi riportati, che sono stati sviluppati e discussi

Dettagli

Lezione 18 Le classi per l'input/output nel pacchetto java.io

Lezione 18 Le classi per l'input/output nel pacchetto java.io Lezione 18 Le classi per l'input/output nel pacchetto java.io Il package java.io incapsula le funzionalità di Input/Output (I/O) di Java. Come tutti i programmatori presto imparano, le applicazioni informatiche

Dettagli

Socket (TCP/IP) Socket (TCP/IP) Concetto di socket. Cenni (reti)

Socket (TCP/IP) Socket (TCP/IP) Concetto di socket. Cenni (reti) Socket (TCP/IP) M. Danelutto LPRb A.A. 2007-2008 Socket (TCP/IP) M. Danelutto LPRb A.A. 2007-2008 Concetto di socket Astrazione presa di rete Comunicazione fra processi su macchine diverse O fra processi

Dettagli

Cifratura simmetrica

Cifratura simmetrica Cifratura Cifratura simmetrica Alice canale insicuro Bob 2 Cifratura simmetrica m Algoritmo di decifratura m Alice canale insicuro Algoritmo di cifratura Bob 3 Cifrari simmetrici chiave privata k chiave

Dettagli