1 Input / Output Spesso un programma deve acquisire dati da una sorgente esterna o inviare informazioni a una destinazione esterna. L’informazione può.

Slides:



Advertisements
Presentazioni simili
File Linguaggio C.
Advertisements

INFORMATICA Altre Istruzioni di I/O
IL PACKAGE java.io Il package java.io definisce quattro
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.
Socket Java Alberto Ferrari.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità A2 Java: le basi del linguaggio.
Java Stream e File.
Java Stream e File. La classe File Per operare con lintero file java mette a disposizione la classe File Per utilizzare la classe File è necessario importare.
12/11/2004Laboratorio di Programmazione - Luca Tesei1 Caratteri – Input da Console Il tipo char Input dallo standard input.
26/11/2004Laboratorio di Programmazione - Luca Tesei1 Input/Output Redirecting, scomposizione dellinput, uso di file.
Capitolo 8 Array Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl.
Programmazione Ingegneria TLC
LIP: 4 Aprile 2008 ECCEZIONI. Eccezioni Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Interfaccia del file system
INFORMATICA I file.
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE File Marco D. Santambrogio – Ver. aggiornata al 9 Maggio 2012.
File.
Fisica Computazionale I - 51 OPERAZIONI DI INPUT/OUTPUT Le operazioni di input/output sono estremamente complesse perche' implicano una sostanziale interazione.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Astrazioni sul controllo Iteratori. 2 Nuove iterazioni Definendo un nuovo tipo come collezione di oggetti (p. es., set) si vorrebbe disporre anche di.
Introduzione agli stream e alle classi
Scomposizione di stringhe
Il linguaggio Fortran 90: 5. Formato di I/O e Files
CAPITOLO 4 LINGUAGGIO JAVA: COSTRUTTI DI BASE. ALFABETO Java adotta la codifica standard Unicode della società Unicode, Inc. (ftp://ftp.unicode.org) definito.
INFORMATICA I file. © Piero Demichelis 2 File Per rendere più uniforme possibile il comportamento dei programmi in relazione alla grande varietà dei dispositivi.
INFORMATICA Altre Istruzioni di I/O. © Piero Demichelis 2 Funzioni di I/O Per la lettura e la scrittura da videoterminale il C prevede numerose istruzioni.
I File.
Java Collections.
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori. Lapproccio classico consiste nellinse- rire controlli.
JAVA E LA RETE L’architettura Java è network-ready
Programmazione in Java
Programmazione in Java (9) Mauro Lorenzutti. 30/09/2005Corso Java - Mauro Lorenzutti2 Scaletta I/O Evoluto Serializzazione Comunicazioni via socket JUnit.
File I record.
Cosa è una applicazione distribuita?
30 ottobre Mergesort F. Bombi 30 ottobre 2002.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
1 Gestione dei File. 2 Perché i file? Sono strutture dati persistenti Sono solitamente memorizzati sui dischi –Si usano dall'interno dei programmi Realizzano.
Programmazione concorrente
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Gestionale A.A. 2003/2004.
Corso JAVA Lezione n° 12 Istituto Statale di Istruzione Superiore “F. Enriques”
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Conversione da base 10 a base X (Utilizzo della pila)
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
Esercizi.
ESERCITAZIONE 12 ESERCIZIO 2 14/05/2014. Consegne 1/4 Definire la classe MyBufferedReader che estende la classe BufferedReader, implementando il metodo.
Ingresso e uscita in Java F. Bombi 10 ottobre 2002.
Argomenti della lezione
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Eccezioni Metodi parziali Eccezioni: Usi e Metodi parziali Eccezioni: rimuovere i requires Eccezioni: rimuovere i requires Eccezioni: definizione, sollevamento,
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE File Marco D. Santambrogio – Ver. aggiornata al 21 Maggio 2014.
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
Gestione dei thread in Java
Input-Output 16 Maggio Nei programmi sviluppati sino ad oggi abbiamo usato * output su schermo (con System.out.print e System.out.print ) * input.
Sistemi di elaborazione dell’informazione Modulo 4 -Tecniche di programmazione distribuita Unità didattica 1 - Socket library Ernesto Damiani Lezione 8.
10/10/20021 Ingresso e uscita in Java F. Bombi 10 ottobre 2002.
11/11/01Classe String 1 La classe String Come usare le stringhe.
13/08/02Input 1 Interagire con il computer Da tastiera Da riga di comando Funzioni di conversione.
1 Metodo I metodi sono uno strumento che i programmatori usano per strutturare i programmi, sia per renderli più facili da capire che per permettere il.
1 Input / Output Spesso un programma deve acquisire dati da una sorgente esterna o inviare informazioni a una destinazione esterna. L’informazione puo’
Stringhe in Java. Definire una stringa. Definire una stringa in Java Il modo più semplice e diretto per creare un oggetto di tipo String è assegnare alla.
Socket programming in Java La realizzazione di un server in Java consente di scrivere una sola versione eseguibile su diverse piattaforme. Il linguaggio.
Input in Java. Uso Scanner Un oggetto per la lettura dalla tastiera Piuttosto, per rappresentare la tastiera del nostro calcolatore useremo un oggetto.
Socket programming in Java La realizzazione di un server in Java consente di scrivere una sola versione eseguibile su diverse piattaforme. Il linguaggio.
Eccezioni – Precisazioni e approfondimenti
Transcript della presentazione:

1 Input / Output Spesso un programma deve acquisire dati da una sorgente esterna o inviare informazioni a una destinazione esterna. L’informazione può essere di ogni tipo:  caratteri,  immagini,  suoni,  oggetti.

2 Input / Output Stream di Input / Output Per acquisire dati, un programma apre uno stream associato alla sorgente di informazione (file, socket, memoria, ecc.) e legge l’informazione sequenzialmente da esso. In modo analogo, un programma puo’ 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 gli stessi.

3 Stream di Input / Output

4 Input / Output LetturaScrittura Apertura dello stream Finché e’ presente informazione leggi l’informazione Chiusura dello stream Apertura dello stream Finché e’ presente informazione scrivi l’informazione Chiusura dello stream

5 Tipi di Stream Le classi di gestione degli stream sono di due tipi in base ai dati su cui operano (caratteri/byte). Stream di Caratteri : classi Reader e Writer Stream di Byte : classi InputStream e OutputStream (di solito usati per leggere file di immagini e suoni). Esistono varie sottoclassi che consentono la lettura/scrittura su file: FileReader e FileWriter (file di testo) FileInputStream e FileOutputStream (file binari).

6 Gestione di Stream di caratteri

7 Gestione di Stream di byte

8 java.lang.Object | +--java.io.Readerjava.io.Reader | +--java.io.InputStreamReaderjava.io.InputStreamReader | +--java.io.FileReader FileReader public FileReader(String fileName)String throws FileNotFoundExceptionFileNotFoundException Crea un nuovo FileReader, per leggere dal file il cui nome viene passato come parametro. Parametri : FileName – nome del file da leggere Throws: FileNotFoundException – se il file specificato non esiste

9 Classi FileReader e FileInputStream Per leggere caratteri da un file si crea un oggetto di tipo FileReader. FileReaderFileReader(String fileName) String Esempio: FileReader reader = new FileReader(“input.txt”); Per leggere sequenze di byte da un file si crea un oggetto di tipo FileInputStream. FileInputStreamFileInputStream(String name) String Esempio: FileInputStream inputStream = 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. Tale valore corrisponde al codice del carattere / byte letto oppure –1 se non ci sono più dati da leggere.

10 Scrittura di dati su file Scrittura Si utilizzano analogamente le classi FileWriter e FileOutputStream per scrivere in un file sequenze di caratteri/byte. FileWriter writer = new FileWriter (“output.txt”); FileOutputStream outputStream = new FileOutputStream (“output.txt”); In entrambi i casi si utilizza il metodo void write(int c) che scrive un carattere/byte per volta. Tale valore corrisponde al codice del carattere / byte da scrivere nel file.  Chiusura di un file Dopo avere letto/scritto tutti i dati nel file, questo deve essere chiuso con il metodo void close().

11 Copia di un file import java.io.*; public class CopyChars { public static void main(String[] args) throws IOException { FileReader in = new FileReader(args[0]); FileWriter out = new FileWriter(args[1]); int c; while ((c = in.read()) != -1) out.write(c); in.close(); out.close(); }

12 Copia di un file import java.io.*; public class CopyBytes { public static void main(String[] args) throws IOException { FileInputStream in = new FileInputStream(args[0]); FileOutputStream out = new FileOutputStream(args[1]); int c; while ((c = in.read()) != -1) out.write(c); in.close(); out.close(); }

13 Classe BufferedReader Un BufferedReader permette di gestire un flusso tramite un buffer: I dati vengono letti a blocchi dal flusso e memorizzati in un buffer (area di memoria). 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. Metodi disponibili in aggiunta a quelli di Reader String readLine() Legge una riga e la restituisce sotto forma di stringa Costruttori disponibili BufferedReader(Reader in) Crea un oggetto BufferedReader a partire da un oggetto Reader

14 Lettura import java.io.*; public class testLettura { public static void main(String[] args) throws IOException { FileReader file = new FileReader(args[0]); BufferedReader in = new BufferedReader(file); String line; while ((line = in.readLine()) != null) System.out.println(line); in.close(); }

15 Classe PrintWriter La classe PrintWriter 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 PrintWriter a partire da un Writer, in particolare da un FileWriter. PrintWriter f = new PrintWriter ( new FileWriter (“nome-file”) );

16 Scrittura import java.io.*; public class testCopia { public static void main(String[] args) throws IOException { FileReader file = new FileReader(args[0]); BufferedReader in = new BufferedReader(file); String line; PrintWriter out = new PrintWriter (new FileWriter(args[1])); while ((line = in.readLine()) != null) out.println(line); in.close(); out.close(); }

17 Classe PrintStream 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(“nome-file”) ); Gli oggetti System.out e System.err sono di tipo PrintStream

18 Scrittura import java.io.*; public class testCopia { public static void main(String[] args) throws IOException { FileReader file = new FileReader(args[0]); BufferedReader in = new BufferedReader(file); String line; PrintStream out = new PrintStream(new FileOutputStream(args[1])); while ((line = in.readLine()) != null) out.println(line); in.close(); out.close(); }

19 Classe StringTokenizer La classe StringTokenizer class e’ 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 StringTokenizer richiede come parametro la stringa da separare. Ciascuna chiamata al metodo nextToken restituisce il token successivo.

20 Classe StringTokenizer Constructor Summary StringTokenizerStringTokenizer(String str) Constructs a string tokenizer for the specified string.String StringTokenizerStringTokenizer(String str, String delim) Constructs a string tokenizer for the specified string.String Method Summary int countTokens() Calculates the number of times that this tokenizer's nextToken method can be called before it generates an exception.countTokens boolean hasMoreTokens() Tests if there are more tokens available from this tokenizer's string.hasMoreTokens String nextToken() Returns the next token from this string tokenizer. StringnextToken

21 Lettura token 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 line; 9. while ((line = in.readLine()) != null) { 10. StringTokenizer st = new StringTokenizer(line); 11. while(st.hasMoreTokens()) 12.System.out.println(st.nextToken()); 13. } 14. in.close(); 15. } 16.}

22 Classe File Serve per ottenere informazioni riguardo un file, non tratta file aperti Nota bene: Creare un oggetto di tipo File non significa creare un file fisico Costruttori disponibili File(String pathname) Crea un oggetto di tipo File a partire da una stringa (il pathname) File(File parent, String child) Crea un oggetto di tipo File avente come nome child a partire dalla directory parent (descritta tramite un oggetto di tipo File ) File(String parent, String child) Crea un oggetto di tipo File avente come nome child a partire dalla directory parent

23 Proprietà di un file 1.import java.io.File; 2. 3.public class FileInfo { public static void main(String[] args) 6. throws java.io.IOException { 7. File f = new File("FileInfo.class"); 8. System.out.println(f.exists()); 9. System.out.println(f.isFile()); 10. System.out.println(f.isDirectory()); 11. System.out.println(f.canRead()); 12. System.out.println(f.canWrite()); 13. System.out.println(f.length()); 14. System.out.println(f.getAbsolutePath()); 15. System.out.println(f.getName()); 16. System.out.println(f.getParent()); 17. File p = new File(f.getAbsolutePath()); 18. System.out.println(p.getParent()); 19. } 20.} true false true True 919 E:\Prove\FileInfo.class FileInfo.class null E:\Prove

24 File Metodi disponibili 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 riferita dall’oggetto File File[] listFiles() Restituisce un vettore con gli oggetti File che fanno riferimento ai file della directory riferita dall’oggetto File …

25 Listato di una directory 1.import java.io.File; 2. 3.public class Lista { 4. 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 Provare a creare un equivalente del comando ls -l

26 La classe System Talvolta un programma richiede l’accesso alle risorse del sistema, allo standard output, allo standard input, ecc. La piattaforma Java consente di effettuare l’accesso alle risorse del sistema attraverso l’uso della classe System. La classe System fornisce lo stream in (di tipo InputStream ) associato allo standard input, lo stream out (di tipo PrintStream ) associato all’output e lo stream err associato allo standard error. Inoltre contiene alcuni metodi che svolgono diversi compiti. Ad esempio il metodo currentTimeMillis() fornisce il tempo in millisecondi (a partire dal 1/1/1970), il metodo exit(int status) interrompe l’interpretazione del programma, ecc.

27 Input da tastiera Lo standard input di un computer è visto attraverso l’oggetto predefinito System.in Questo oggetto mette a disposizione un numero limitato di operazioni Esistono delle classi predefinite che a partire da questo oggetto creano nuovi oggetti con maggiori funzionalità La classe InputStreamReader Un InputStreamReader converte una sequenza di byte in una sequenza di caratteri in accordo con uno specifico sistema di codifica. La classe BufferedReader Un BufferedReader legge una sequenza di caratteri, la memorizza in un buffer in modo da fornire funzioni per la lettura di intere linee. 1.InputStreamReader reader = new InputStreamReader(System.in); 2.BufferedReader console = new BufferedReader(reader); Dopo queste operazioni posso utilizzare l’oggetto console e il metodo readLine() in grado di restituirmi una linea da tastiera (tutti i caratteri immessi fino alla pressione di un fine linea) sotto forma di stringa. String line = console.readLine();