10/10/20021 Ingresso e uscita in Java F. Bombi 10 ottobre 2002.

Slides:



Advertisements
Presentazioni simili
File Linguaggio C.
Advertisements

Introduzione al linguaggio C++
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.
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
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
1 System Call per Comunicazione tra Processi Pipe.
INFORMATICA I file.
Programmazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++
Caratteri e stringhe di caratteri
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
Eccezioni Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA Uff
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE File Marco D. Santambrogio – Ver. aggiornata al 15 Maggio 2013.
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.
Introduzione agli stream e alle classi
Scomposizione di stringhe
Il linguaggio Fortran 90: 5. Formato di I/O e Files
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.
Concetti di informatica e fondamenti di Java, 4 ed.Apogeo ©2007 Capitolo 11 Ingresso/uscita e gestione delle eccezioni Cay S. Horstmann Concetti di informatica.
A.A. 2010/2011Ambienti di Programmazione per il Software di Base1 (Es. – 6) Ambienti di Programmazione per il Software di Base Le Stringhe in C Input.
I File.
Argomenti della lezione
GESTIONE DEI FILE Per poter mantenere disponibili i dati tra le diverse esecuzioni di un programma (persi-stenza dei dati) è necessario poterli archi-viare.
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.
JAVA Franco Bombi 8 ottobre FB Introduzione Java è un linguaggio di impiego generale, basato su classi e orientato agli oggetti Java.
Cosa è una applicazione distribuita?
30 ottobre Mergesort F. Bombi 30 ottobre 2002.
1 Gestione dei File. 2 Perché i file? Sono strutture dati persistenti Sono solitamente memorizzati sui dischi –Si usano dall'interno dei programmi Realizzano.
Corso JAVA Lezione n° 12 Istituto Statale di Istruzione Superiore “F. Enriques”
Le eccezioni F. Bombi 01/11/ Errori e situazioni impreviste situazioni eccezionali In un programma situazioni eccezionali possono.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Programmazione in linguaggio C
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
Programmazione Web PHP e MySQL 1. 2Programmazione Web - PHP e MySQL Esempio: un blog.
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,
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.
Fabio Scotti – Università degli Studi – Laboratorio di programmazione per la sicurezza 1 Lezione 13 e 14 GESTIONE DEI FILE A) Nozioni sulla gestione dei.
1 Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( ) Laboratorio di programmazione Lezione 13 e 14 -
Input-Output 16 Maggio Nei programmi sviluppati sino ad oggi abbiamo usato * output su schermo (con System.out.print e System.out.print ) * input.
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Operatori di incremento e decremento
Il C `e un linguaggio di programmazione di uso generale, originariamente sviluppato per la scrittura del sistema operativo Unix, ed oggi disponibile su.
1 Input / Output Spesso un programma deve acquisire dati da una sorgente esterna o inviare informazioni a una destinazione esterna. L’informazione può.
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’
Linguaggio C++ Un esempio: Registrazione e lettura di dati in un file File e Stream.
Socket programming in Java La realizzazione di un server in Java consente di scrivere una sola versione eseguibile su diverse piattaforme. Il linguaggio.
Transcript della presentazione:

10/10/20021 Ingresso e uscita in Java F. Bombi 10 ottobre 2002

10/10/20022 I flussi di ingresso e uscita Il pacchetto java.io definisce le operazioni di ingresso e uscita in termini di flussi (stream). I flussi sono sequenze ordinate di dati che hanno una sorgente (flussi di ingresso) o una destinazione (flussi di uscita) Le classi di java.io nascondono i dettagli del sistema operativo sottostante e dei dispositivi di ingresso e uscita coinvolti dalle operazioni di ingresso e uscita

10/10/20023 Caratteri e byte I flussi di ingresso e uscita possono essere – flussi di caratteri (character stream) composti da caratteri Unicode codificati con 16 bit, le classi che realizzano i flussi di caratteri sono indicate come lettori (reader) scrittori (writer) – flussi di byte (byte stream) composti da byte di 8 bit, le classi che realizzano i flussi di byte sono indicate come flussi di ingresso (input stream) flussi di uscita (output stream)

10/10/20024 Byte e Caratteri Si utilizzeranno byte stream quando si voglia elaborare informazione di tipo binario oppure quando si voglia elaborare, un carattere alla volta, file composti da caratteri rappresentati con un solo byte ciascuno secondo la codifica ASCII Si utilizzeranno reader e writer quando si voglia elaborare informazione di tipo testuale. È possibile convertire uno stream in un reader o in writer in modo che un testo Unicode sia trasformato in un flusso di byte un carattere per byte e viceversa

10/10/20025 Errori È sempre possibile che un’operazione di ingresso o uscita 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 in due modi: in qualche caso l’errore è segnalato cambiando lo stato dello stream, più frequentemente l’errore è segnalato lanciando un’eccezione di tipo IOException che deve essere catturata o passata al programma chiamante

10/10/20026 Ingresso da file binari Per leggere un file in formato binario si utilizza un oggetto della classe FileInputStream Un file di cui si conosca il nome come stringa di caratteri si apre invocando il costruttore: FileInputStream in = new FileInputStream(nome); Per leggere un byte si utilizza il metodo read() che restituisce un int con il byte letto inserito negli 8 bit meno significativi All’ EOF il metodo read() restituisce il valore –1 Al termine delle operazioni di ingresso il file deve essere chiuso invocando il metodo close()

10/10/20027 Uscita su file binari Per scrivere un file in formato binario si utilizza un oggetto della classe FileOutputStream Il file in uscita viene aperto invocando il costruttore: FileOutputStream out = new FileOutputStream(nome); che crea il file individuato dalla stringa nome se non esiste o azzera il file se esiste Per scrivere un byte si utilizza il metodo write(int c). Il metodo usa un solo parametro int del quale verranno trasferiti in usciti gli 8 bit meno significativi Al termine delle operazioni di uscita il file deve essere chiuso, per assicurarsi che il contenuto dei buffer di sistema sia effettivamente trasferito sul file, invocando il metodo close()

10/10/20028 // Copia2.java import java.io.*; public class Copia2 { public static void main (String[] arg) throws IOException { FileInputStream in = new FileInputStream(arg[0]); FileOutputStream out = new FileOutputStream(arg[1]); int c = in.read(); while (c != -1) { out.write(c); c = in.read(); } out.close(); } $ java Copia2 f1 f2

10/10/20029 Lettore o Reader Per accedere ad un file di testo si userà un reader aprendo il file con il costruttore: FileReader lettore = new FileReader(nome); Il lettore consente di leggere un carattere alla volta con il metodo read(), è in genere più comodo leggere una riga alla volta convertendo il lettore in un BufferedReader con il costruttore: BufferedReader in = new BufferedReader(lettore); Il BufferedReader dispone del metodo readLine() che restituisce in una stringa un’intera riga letta dal file (privata del fineriga) All’ EOF il metodo realLine() restituisce un riferimento null

10/10/ Scrittore o Writer Per scrivere un file di testo si userà un writer aprendo il file con il costruttore: FileWriter scrittore = new FileWriter(nome); Lo scrittore consente di scrivere un carattere alla volta con il metodo write(c), è in genere più comodo disporre delle funzionalità di un PrintWriter creato con il costruttore: PrintWriter out = new PrintWriter(scrittore); Il PrintWriter dispone dei metodi print(arg) e println(arg) che convertono l’argomento in una stringa per poi trasferirla in uscita eventualmente con l’aggiunta di un fineriga

10/10/ Che cosa è il fineriga? Un file di testo è un file composto da caratteri (nel nostro caso da caratteri di un byte secondo la codifica ASCII) Il file è diviso in righe cioè in sequenze di caratteri terminati dalla stringa fineriga Il fineriga dipende dal sistema operativo – “\r\n”Windows – “\n”Unix – Linux – “\r”MAC OS Per generare un fineriga da tastiera si usa una sequenza di controllo – Ctr cWindows – Ctr dUnix

10/10/ Flussi standard La macchina virtuale Java eredita dal sistema operativo tre flussi già aperti che vengono passati a metodo main() : – System.in ingresso standard di tipo InputStream normalmente connesso alla tastiera del posto di lavoro – System.out uscita standard di tipo PrintStream normalmente connesso con la finestra di lavoro – System.err uscita standard per i messaggi d’errore di tipo PrintStream normalmente connesso con la finestra di lavoro Ingresso e uscite standard dovrebbero essere dei reader e dei writer, sono stati definiti come stream nella versione 1.0 di JDK prima dell’introduzione dei flussi di caratteri nel pacchetto java.io. L’uso della classe PrintStream è deprecated (tollerato per compatibilità all’indietro) e in pratica usato solo con System.out e System.err.

10/10/ Dirottamento dei flussi standard La shell Unix e analogamente il prompt di comandi Windows consentono di dirottare (file redirection) l’ingresso e l’uscita standard rispettivamente dalla tastiera ad un file e dallo schermo verso un file È possibile trasformare l’ingresso standard in un InputStreamReader e successivamente in un BufferedReader. In questo modo è possibile leggere dall’ingresso una riga alla volta con il metodo readLine() molto più comodo del metodo read() che richiede di leggere un carattere alla volta e di gestire il fineriga (diverso da sistema a sistema)

10/10/ Flussi standard Tastiera file applicazione schermo file System.in System.out System.err Parametri della riga di comando schermo < >

10/10/ Copia.java import java.io.*; public class Copia { public static void main (String[] arg) throws IOException {InputStreamReader lettore = new InputStreamReader(System.in); BufferedReader in = new BufferedReader(lettore); String str = in.readLine(); while (str != null) { System.out.println(str); str = in.readLine(); } $ java Copia $ java Copia >nomeFile $ java Copia <nomeFile $ java Copia f2

10/10/ // Crea.java import java.io.*; public class Crea { public static void main (String[] arg) throws IOException { FileOutputStream out = new FileOutputStream(arg[0]); int n = Integer.parseInt(arg[1]); for (int i = 0; i < n; i++) out.write(i); out.close(); } $ java Crea file lunghezza

10/10/ // Dump.java -- esamina il contenuto di un file binario import java.io.*; public class Dump { public static void main (String[] arg) throws IOException { FileInputStream in = new FileInputStream(arg[0]); int n = Integer.parseInt(arg[1]); int c = 0; int i = 0; String str = Integer.toString(i); while (str.length() < 4) str = " " + str; System.out.print(str); String car = " "; while (((c = in.read()) != -1) && (i < n)) { str = Integer.toString(c); while (str.length() < 4) str = " " + str; System.out.print(str); i++; if (c < 31) car += '.'; // i caratteri di controllo diventano un punto else if (c < 128) car += (char)c; // caratteri ASCII else car += '*'; // eventuali caratteri > 127 diventano *

10/10/ if (i % 10 == 0) // ogni 10 caratteri un fineriga { System.out.println(car); car = " "; str = Integer.toString(i); while (str.length() < 4) str = " " + str; System.out.print(str); } // Dump.ja va -- esam ina il con tenuto di !"#$%&' ()*+,-./01