Lettura e scrittura - Stream

Documenti analoghi
Lettura e scrittura - Stream

INPUT OUTPUT

Informatica. Prof. A. Longheu. Input e Output

A. Ferrari Java: Stream e File

Programmazione ad Oggetti

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

A. Ferrari Stream e File

Corso sul linguaggio Java

LETTURA DI DATI DA INPUT

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

Java I/O e serializzazione

Corso sul linguaggio Java

Lezione 16 programmazione in Java

La paninoteca. Mi resta da scrivere solo costo()

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

Fondamenti di Informatica C Esercitazioni di Laboratorio / 4 Outline

Creazione, eliminazione, lettura e scrittura di file di testo

Gestione di file in Java

Input/Output in Java

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

LETTURA E SCRITTURA DI FILE

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

Java I/O e serializzazione

Laboratorio di reti I: Java IO

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

Le classi FileInputStream e RandomAccessFile. Semplici Algoritmi di Ordinamento

I/O Streams in Java. Lorenzo Gallucci

Il linguaggio Java I file sequenziali

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

Input/Output in Java

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

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

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:

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

Variabili e Metodi di classe Interfacce e Package File in Java

Creazione, eliminazione, lettura e scrittura di file di testo

Corso sul linguaggio Java

Il linguaggio Java. Gli stream

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

Note ed esercizi aggiuntivi

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

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

Java: la libreria delle classi

Indice. 1 Java I/O API. Indice

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

Unità 2 I file binari

Gestione dell I/O su File

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

Programmazione Orientata agli Oggetti in Linguaggio Java

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

Introduzione. Java. Streams. Streams

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

Comunicare'con'il'mondo

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

Server Sequenziale. Server Concorrente. Esercitazione: Socket Java con connessione

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

RETI DI CALCOLATORI Linguaggio Java: Eccezioni

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

domenica 9 giugno 13 Serializzazione

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

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Programmazione 2. Input Output su Stream e File

Fondamenti di Informatica

Operazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

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

Principi, Modelli e Applicazioni per Sistemi Distribuiti M

Programmazione distribuita in Java. Socket & Client-Server

Sockets in Java. Lorenzo Gallucci

Eccezioni Precisazioni e approfondimenti

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

Programmazione in Java e gestione della grafica. Lezione 24

Caratteri Input da Console

Flussi, lettori e scrittori

Il sistema I/O di Java

ESERCIZIO 1 (FILE DI TESTO)

Java. Il package java.io

Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B

Corso sul linguaggio Java

FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni

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

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Informatica I. Ingegneria Medica. Prof. Diego Salamon

Unità A1 I file testo

IL PACKAGE java.io CONCETTO BASE: LO STREAM

Esercitazioni Ingegneria del So2ware 3 - Programmazione Java Excep<ons, I/O

PACKAGE DI I/O. Dott. Riccardo Zese.

Sommario. I Uso degli oggetti 39

Input e Output in Java

Le command line di Java. Esercitazioni di Sistemi Operativi III Lezione n. 2

Eccezioni. Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi.

RETI DI CALCOLATORI Linguaggio Java: Il Package di Input Output

PROVA FINALE Ingegneria del software

15 Input-Output. Mirko Viroli C.D.L. Ingegneria e Scienze Informatiche Alma Mater Studiorum Università di Bologna, Cesena

Errata Corrige di Manuale di Java 9

Introduzione a Java e all'ambiente di sviluppo

Transcript:

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 gli stream Lettura: Reader e InputStream Scrittura: Writer e OutputStream Sottoclassi specializzate Filtri Stream particolari Standard I/O File Stream associati ai socket -> Programmazione di rete 1

Generalità Stream: canale di comunicazione tra un programma (Java) e una sorgente (destinazione) da cui importare (verso cui esportare) dati L informazione viene letta (scritta) serialmente, con modalità FIFO 2

Generalità/2 Accesso sequenziale in lettura e scrittura FIFO Read Only o Write Only: servono due stream per un canale bi-direzionale Bloccanti Quasi tutti i metodi possono generare eccezioni Il package java.io contiene classi che implementano gli stream Lettura Apri lo stream while (ci sono ancora dati) leggi dato chiudi lo stream Scrittura Apri lo stream while (ci sono ancora dati) scrivi dato chiudi lo stream 3

Tipi di Stream Due gerarchie di classi: Stream di caratteri: servono a leggere/scrivere sequenze di caratteri UNICODE a 16 bit Stream di byte: servono a leggere/scrivere sequenze di byte (tipicamente dati) 4

Lettura Classe Reader Costruttore: protected Reader(); Metodi principali: public int read() throws IOException: Legge e restituisce il singolo carattere oppure 1 se arriva alla fine public int read(char[] cbuf) throws IOException: cbuf è il buffer di destinazione Legge caratteri dallo stream in cbuf finché l array è pieno, si verifica un errore o lo stream è finito Restituisce no. caratteri letti o 1 se si raggiunge la fine dello stream public abstract int read(char cbuf[], int off, int len) throws IOException: cbuf è il buffer di destinazione off è la posizione iniziale in cbuf a partire dalla quale scrivere len è il numero max di caratteri da leggere Restituisce il no. di caratteri letti o 1 se lo stream è finito public abstract void close() throws IOException: Chiude lo stream 7

Lettura Classe InputStream Costruttore: public InputStream(); Definisce gli stessi metodi, ma per leggere byte e array di byte: public int read() throws IOException: public int read(byte[] cbuf) throws IOException: public abstract int read(char cbuf[], int off, int len) throws IOException: public abstract void close() throws IOException: 8

Scrittura Classe Writer Costruttore: protected Writer(); Metodi principali: public void write(int c) throws IOException public void write(char[] cbuf) throws IOException public abstract void write(char[] cbuf, int off, int len) throws IOException cbuf: array di caratteri off: posizione da cui cominciare a scrivere len: No. caratteri da scrivere public abstract void flush() throws IOException: svuota immediatamente il buffer (cbuf). Prosegui a cascata public abstract void close() throws IOException: chiude lo stream 9

Scrittura Classe OutputStream Costruttore: public OutputStream(); Metodi principali: public void write(byte[] b) throws IOException: scrive i b.length() byte di b sullo stream public void write(byte[] b, int off, int len) throws IOException b: array di byte off: posizione da cui cominciare a scrivere len: No. byte da scrivere public abstract void write(int b) throws IOException public abstract void flush() throws IOException: svuota immediatamente il buffer (b) public abstract void close() throws IOException: chiude lo stream 10

Estensioni degli stream - Filtri Caratteristiche fondamentali dei filtri: Sono classi derivate da InputStream e OutputStream Si attaccano a un InputStream o OutputStream: chiamare write() su un filtro significa chiamare anche write() sull OutputStream attaccato E possibile combinare in serie diversi filtri ottenendo combinazioni potenti In pratica, si usano sottoclassi di FilterOutputStream e FilterInputStream FilterOutputStream OutputStream InputStream FilterInputStream 11

BufferedInputStream/ BufferedOutputStream Realizzano buffering per rendere più efficienti le operazioni di I/O su stream di byte I costruttori accettano un InputStream/OutputStream e realizzano un nuovo stream che fa I/O efficientemente I metodi sono sostanzialmente gli stessi Costruttori: public BufferedInputStream(InputStream in); dimensione default buffer 512 byte public BufferedInputStream(InputStream in,int size); public BufferedOutputStream(OutputStream out); dimensione default buffer 512 byte public BufferedOutputStream(OutputStream out,int size); BufferedOutputStream implementa flush() 12

DataInputStream/ DataOutputStream Forniscono metodi per leggere dati di formato complesso (byte, int, stringhe ecc.) da un InputStream Costruttori: public DataInputStream(InputStream in) public DataOutputStream(OutputStream out) Notare che InputStream e OutputStream sono astratte Metodi più importanti: public writeboolean(boolean v) throws IOException; public boolean readboolean() throws IOException;... public writechars(string s) throws IOException; Per la lettura di stringhe è preferibile usare il metodo readline() di BufferedReader -> più avanti 13

InputStreamReader/ InputStreamWriter Sottoclassi di Reader/Writer Creano un ponte tra stream a byte e a carattere Costruttori: public InputStreamReader(InputStream in): accetta un oggetto InputStream e crea un oggetto InputStreamReader (e dunque Reader) OutputStreamWriter(OutputStream out): accetta un oggetto di tipo OutputStream e crea un oggetto di tipo OutputStreamWriter (e dunque Writer) Altri costruttori permettono di specificare una codifica 14

InputStreamReader/ InputStreamWriter/2 La codifica permette di associare byte e caratteri Esempio: i byte dello stream sottostante possono rappresentare caratteri codificati in formato UNICODE a 16 bit In tal caso: le maiuscole vanno da u0041 a \u005a Hex char byte InputStreamReader InputStream (codifica Es. UN 16 bit) La situazione è analoga per un OutputStreamWriter 15

BufferedReader/ BufferedWriter Realizzano buffering per rendere più efficienti le operazioni di I/O su stream di caratteri Costruttori: public BufferedReader(Reader in) public BufferedReader(Reader in, int sz) public BufferedWriter(Writer out) public BufferedWriter(Writer out, int sz) sz permette di specificare la dimensione del buffer Metodo più importante: public String readline() throws IOException: legge una linea di testo, restituendo la stringa corrispondente 16

System.in/System.out I/O standard in e out sono membri (variabili statiche final) della classe finale System in è di tipo InputStream, out di tipo OutputStream (è in realtà oggetto di classe PrintStream, una sottoclasse di OutputStream) import java.io.*; public class classelettura { public static void main(string args[]) throws IOException { } InputStream stdin = System.in; String inputline; InputStreamReader in = new InputStreamReader(stdIn); BufferedReader myreader = new BufferedReader(in); try { inputline = new String(myReader.readLine()); } } catch (IOException e) {throw e;} System.out.println("Hai scritto "+inputline); 17

FILE In Java sono rappresentati dalla classe FILE Rappresentazione astratta di file e directory Metodi per manipolare file e directory, ma non per leggere/scrivere Per leggere/scrivere su/da un file bisogna prima associare uno stream al file Nel seguito: FileInputStream/FileOutputStream Metodi utili della classe FILE Problema: copia di file 18

FileInputStream/ FileOutputStream Sono sottoclassi di InputStream e OutputStream Aprono stream di byte da/verso file Hanno gli stessi metodi di InputStream e OutputStream Si possono applicare i filtri (ad esempio DataInputStream e DataOutputStream) Costruttori: public FileInputStream(File file) throws FileNotFoundException public FileInputStream(String name) throws FileNotFoundException public FileOutputStream(File file) throws FileNotFoundException public FileOutputStream(String name) throws FileNotFoundException public FileOutputStream(String name, boolean append) throws FileNotFoundException 19

FileReader/ FileWriter Sono sottoclassi di Reader e Writer Aprono stream di caratteri da/verso file Hanno gli stessi metodi di Reader e Writer Si possono applicare i filtri (ad esempio BufferedReader e BufferedWriter) Costruttori: public FileReader(File file) throws FileNotFoundException public FileReader(String name) throws FileNotFoundException public FileWriter(File file) throws FileNotFoundException public FileWriter(String name) throws FileNotFoundException public FileWriter(String name, boolean append) throws FileNotFoundException 20

La classe FILE Rappresentazione astratta di file e directory Metodi per manipolare file e directory (creare, distruggere ecc.) Non contiene metodi per leggere/scrivere Costruttori: public File(String pathname) throws NullPointerException public File(File parent, String child) throws NullPointerException public File(String parent, String child) throws NullPointerException Se il file non esiste, esso è effettivamente creato solo quando si apre uno stream verso di esso 21

La classe FILE/2 Campi più importanti: public static final char separatorchar: restituisce il carattere (dipendente dal S. O.) che separa i nomi nelle directory Metodi più importanti: public boolean delete() throws SecurityException public boolean exists() throws SecurityException public String getabsolutepath() public String getname() public boolean isdirectory() public boolean isfile() public long length() public String[] list() public File[] listfiles() public static File[] listroots() public boolean mkdir() throws SecurityException public boolean mkdirs() throws SecurityException SecurityException è sottoclasse di RuntimeException 22

Esempio FileReader Esempio FileInputStream 23