Input/Output in Java



Documenti analoghi
Corso sul linguaggio Java

20 - Input/Output su File

Il linguaggio Java I file sequenziali

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

Flussi, lettori e scrittori

A. Ferrari Java: Stream e File

A. Ferrari Stream e File

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

La paninoteca. Mi resta da scrivere solo costo()

JAVA Caratteristiche e costrutti fondamentali

Lettura e scrittura - Stream

Programmazione ad Oggetti

LETTURA E SCRITTURA DI FILE

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

LETTURA DI DATI DA INPUT

Cifratura simmetrica

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

Corso di Reti di Calcolatori L-A

Il linguaggio Java. Gli stream

Pila di interi. Car 1. Car n. Pila di interi: Pila di Oggetti: Gli elementi che sono inseriti e tolti dalla pila sono numeri interi

ProgettAzione tecnologie in movimento - V anno Unità 4 - Realizzare applicazioni per la comunicazione in rete

JAVA INTRODUZIONE C++ JDK e JRE API IDE (BLUEJ) JAVA Introduzione. Versioni e IDE DIAPOSITIVA 2 ALESSANDRO URSOMANDO

GESTIONE DEI PROCESSI

Introduzione al Linguaggio C

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

Variabili e Metodi di classe Interfacce e Package File in Java

Gestione dei File in C

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Indice. 1 Java I/O API. Indice

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

Utilizzo delle classi

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

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Algoritmi di Ricerca. Esempi di programmi Java

10.4. La classe File e gli attributi di directory e file

Lettura e scrittura - Stream

I file di dati. Unità didattica D1 1

Architettura Client-Server

Informatica. Prof. A. Longheu. Input e Output

Esercitazione 6. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008

LABORATORIO DI INFORMATICA parte 6 -

Fondamenti di Informatica C Esercitazioni di Laboratorio / 4 Outline

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

Esercitazione n 4. Obiettivi

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

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

Il sistema I/O di Java

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Input e Output in Java

Laboratorio di Informatica Lezione 4

domenica 9 giugno 13 Serializzazione

Le variabili. Olga Scotti

INPUT OUTPUT

Parte II: Reti di calcolatori Lezione 12

Università degli Studi di Modena e Reggio Emilia. Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB. Http con java, URL

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Primo scritto 11 Gennaio 2008

Ottava Esercitazione. introduzione ai thread java mutua esclusione

02CBI - M. Morisio. I/O in Java. Input Output. Classi di Primo Livello - java.io. Stream. Pag. 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:

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Parte II: Reti di calcolatori Lezione 10

Struttura di un programma Java

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

Gestione dell I/O su File

Scope e visibilità per classi

Java Virtual Machine

Corso Android New Edition Corso Online Programmatore Android New Edition

Struttura a record. File ad accesso diretto. Modalità di apertura. Modalità di apertura

Programmare in Java. Olga Scotti

Programmazione in Java e gestione della grafica. Lezione 24

Lezione 16 programmazione in Java

Main System Monitor Keyboard

Strumenti per la programmazione

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

Appunti di Informatica 1

Informatica I. Ingegneria Medica. Prof. Diego Salamon

Chat. Si ha un server in ascolto sulla porta Quando un client richiede la connessione, il server risponde con: Connessione accettata.

Funzioni. Il modello console. Interfaccia in modalità console

File, flussi e pacchetto java.io

Introduzione alla programmazione in C

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

Introduzione. Java. Streams. Streams

L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo

Il linguaggio Java. Concetti base. I packages

ARRAY BIDIMENSIONALI float [][] mx = new float[3][4]; (float []) [] mx = new float[3][4];

RETI DI CALCOLATORI Linguaggio Java: Il Package di Input Output

I/O su Socket TCP: read()

Esercitazione N7:Gioco dei 21 fiammiferi (impariamo java giocando)

Modulo 4: Ereditarietà, interfacce e clonazione

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Prova di Laboratorio di Programmazione

Unità B3 Strutture di controllo

Uno stream o flusso di dati o canale è un percorso di comunicazione tra la sorgente di una certa informazione e la sua destinazione.

Esempi di esercizi d esame

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Transcript:

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 utilizzare, importandolo, il package java.io. Per utilizzare tutte le classi del tale package nel proprio programma si deve aggiungere l istruzione seguente: import java.io.*; In questo corso verranno spiegati i concetti utili per utilizzare i file e la rete.

Input/Output in Java La libreria delle classi Java è di una vastità non indifferente Approccio adottato in questo corso: descrizione delle classi fondamentali e delle funzionalità più importanti Esercizi per mettere in pratica quanto spiegato Per una descrizione più approfondita si consiglia l uso della documentazione ufficiale del package

Input/Output in Java Il package java.io include classi, interfaccie ed eccezioni per la gestione dell I/O Distinguiamo tra due classi di funzionalità: Funzionalità per accedere ad informazioni relative ai file ed alle directory. Esempio: Dimensione dei file, elenco dei file contenuti in una directory,... Funzionalità per leggere e scrivere dati

Classe per accesso alle informazioni riguardanti il file system La classe fondamentale per accedere alle informazioni relative ai file ed alle directory è la classe File E importante tenere presenti i problemi di portabilità del codice: Path Unix: Windows: Percorso di un file Unix: Windows: /bin:/usr/bin:/usr/local/bin c:\bin;c:\java\bin /usr/java/bin/javac c:\java\bin

La classe java.io.file: agenda Della classe File verranno presentati: Le costanti I costruttori I metodi principali Un esempio di utilizzo Al termine della presentazione verrà proposto un esercizio.

La classe java.io.file: le costanti public static final String separator il separatore di file (stringa) public static final char separatorchar il separatore di file (carattere) public static final String pathseparator il separatore di path (stringa) public static final char pathseparatorchar il separatore di path (carattere)

La classe java.io.file: esempio import java.io.*; public class Prova { public static void main(string args[]){ System.out.println( File.separator + " - + File.separatorChar + " - + File.pathSeparator + " - + File.pathSeparatorChar); } } Output (su Windows): \ - \ - ; - ;

La classe java.io.file: costruttori public File(String path) Esempio: File f = new File( C:\prova.txt ); File cartella = new File( C:\cartella ); public File(String path, String name) Esempio: File f = new File( C:\, prova.txt ); public File(File dir, String name) Esempio: File f = new File(cartella, prova.txt );

La classe java.io.file: metodi public String getname() public String getpath() public String getparent() può ritornare null se non esiste il parent public boolean exists() public boolean canread() public boolean canwrite() public boolean isfile() public boolean isdirectory () public long lastmodified() public long length() public boolean mkdir() public boolean mkdirs() public boolean renameto (File dest) public String[] list() public String[] list (FilenameFilter f) public boolean delete()

La classe java.io.file: Esercizio Scrivere un programma chiamato Info che analizza il contenuto di args[0]: Se args[0] contiene il nome di un file allora stampa le dimensioni del file indicato; Se args[0] contiene il nome di una cartella allora stampa la lista di file contenuti nella cartella indicata. Prima dell esercizio verrà fatto vedere un esempio pratico dell utilizzo del programma da realizzare. Per chi finisce prima: ricercare sulla documentazione ufficiale e utilizzare i metodi che forniscono ulteriori informazioni riguardanti file e directory. Adattare il programma.

Lettura e scrittura di dati Distinguiamo tra classi per l accesso sequenziale ai dati di utilizzo generale, non limitate ai file classi per l accesso diretto (random) a dati contenuti su file

Accesso sequenziale ai dati Il meccanismo di lettura e scrittura sequenziale dei dati è basato sul concetto di stream Uno stream è un oggetto sul quale è possibile leggere e scrivere dati sequenzialmente Il package java.io include numerose classi per la gestione di stream

Gli stream I programmi Java comunicano, cioè effettuano l I/O, tramite gli stream (flussi). Uno stream: è un astrazione ad alto livello che produce o consuma informazioni; rappresenta un collegamento a un dispositivo fisico del sistema I/O di Java.

Schematizzazione degli stream Stream di input: Programma java Stream di output Input Stream Dispositivo I/O I dispositivi di I/O possono essere file. memoria, rete, ecc. Programma java Dispositivo I/O Output Stream

Algoritmi standard di lettura-scrittura Gli algoritmi standard di lettura e scrittura prevedono tre fasi: Algoritmo di lettura 2) Apertura dello stream di input 3) while ci sono dati da leggere : Leggi i dati in input 4) Chiusura dello stream Algoritmo di scrittura 2) Apertura dello stream di output 3) while ci sono dati da scrivere : Scrivi i dati in output 4) Chiusura dello stream

Classificazione degli stream Gli stream possono essere suddivisi per tipo di dato: stream di caratteri (16 bit) stream di byte (8 bit) funzionalità: data sink stream: durante il transito i dati non sono processati processing stream: i dati vengono processati (es: bufferizzazione)

Stream di caratteri Le classi astratte Reader e Writer forniscono le API e una parziale implementazione di stream di caratteri, rispettivamente, di input e output; Le sottoclassi di Reader e Writer implementano stream specializzati;

Stream di caratteri per leggere in bianco: processing stream in grigio: data sink stream

Stream di caratteri per scrivere in bianco: processing stream in grigio: data sink stream

Stream di caratteri Data Sink Stream fondamentali: CharArrayReader, CharArrayWriter: lettura e scrittura in memoria; FileReader, FileWriter: lettura e scrittura su File; PipedReader, PipedWriter: Implementano le componenti input e output di una Pipe. Le pipe sono utilizzate per la comunicazione tra thread. PipedReader e PipedWriter sono collegati o tramite costruttori o tramite il metodo connect.

Stream di caratteri Processing Stream fondamentali: BufferedReader, BufferedWriter: lettura e scrittura bufferizzata riduce gli accessi aumenta l efficienza; LineNumberReader: lettura bufferizzata tenendo traccia delle linee. Possiede il metodo ReadLine() per leggere linea per linea.

Stream di caratteri: esempio (1/3) import java.io.*; /* questo programma copia il file input.txt sul file output.txt */ public class Copia { public static void main(string[] args) throws Exception { File inputfile = new File("input.txt"); File outputfile = new File("output.txt"); [continua]

Stream di caratteri: esempio (2/3) /* L oggetto in è uno stream di input associato * al file inputfile. L oggetto out è uno stream * di output associato al file outputfile. */ FileReader in = new FileReader(inputFile); FileWriter out = new FileWriter(outputFile); /* L oggetto inb è uno stream di input * bufferizato a partire da in. L oggetto outb è * uno stream bufferizato a partire da out */ BufferedReader inb = new BufferedReader(in); BufferedWriter outb = new BufferedWriter(out); [continua]

Stream di caratteri: esempio (3/3) /* Scrivi su outb i caratteri letti da inb * finchè ce ne sono */ int c; while ((c = inb.read())!= -1) outb.write(c); /* Chiusura degli stream */ inb.close(); outb.close(); } }

Stream di byte Le classi astratte InputStream e OutputStream forniscono le API e una parziale implementazione di stream di byte di input e output; Le sottoclassi di InputStream e OutputStream implementano stream di byte specializzati;

Stream di byte per leggere in bianco: processing stream in grigio: data sink stream

Stream di byte per scrivere in bianco: processing stream in grigio: data sink stream

Stream di byte Funzioni analoghe alle classi che implementano stream di char tranne che per le classi: ObjectOutputStream, ObjectInputStream; Queste permettono di serializzare un oggetto ovvero di codificarlo come stream di byte per poi salvarlo o trasmetterlo via rete.

Stream di byte: esempio (1/2) Salvataggio di due oggetti in un file: FileOutputStream out = new FileOutputStream( temp.dat"); ObjectOutputStream s = new ObjectOutputStream(out); // Scrive nel file Tempo 2 oggetti: la stringa Oggi s.writeobject( Oggi"); // ed un oggetto di tipo Date() s.writeobject(new Date()); s.flush(); Nota: Gli oggetti String e Date sono serializzabili perché implementano l interfaccia Serializable

Stream di byte: esempio (2/2) Recupero di due oggetti salvati su un file: FileInputStream in = new FileInputStream ( temp.dat"); ObjectInputStream s = new ObjectInputStream(in); // Gli oggetti vengono letti dal file Tempo String today = (String)s.readObject(); Date date = (Date)s.readObject(); Nota: Gli oggetti String e Date sono serializzabili perché implementano l interfaccia Serializable

Ultimi argomenti: Introduzione alla classe RandomAccessFile, utile per gestire file ad accesso diretto. Approfondimento sulla classe System

La classe RandomAccessFile La classe RandomAccessFile consente la lettura e la scrittura di file ad accesso casuale; Supporta il concetto di file pointer per il mantenimento della posizione corrente nel file. Il file pointer è l offset in byte dall inizio del file; Per il posizionamento del file pointer fornisce i metodi: skipbytes(int n) fa avanzare il file pointer di n byte seek(long pos) imposta il file pointer alla posizione pos getfilepointer() restituisce il valore del file pointer

La classe System La classe System fornisce una interfaccia alle risorse del sistema; Implementa lo standard input, output ed error; Le sue variabili e i suoi metodi sono statici (non può essere istanziata) e vi si può accedere solo tramite dot-notation System.<variabile>; System.<metodo>;

La classe System Variabili in out err Standard input. Variabile di tipo InputStream Standard output. Variabile di tipo PrintStream Standard err. Variabile di tipo PrintStream Metodi currenttimemillis() fornisce in ms il tempo di sistema dal 1 Gennaio 1970 setin, setout, seterr standard input, output ed error riassegnano rispettivamente exit(int i) exit dall interprete java con return code = i

Domande??