A. Ferrari Stream e File

Documenti analoghi
A. Ferrari Java: Stream e File

Programmazione ad Oggetti

Lettura e scrittura - Stream

Corso sul linguaggio Java

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:

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

Creazione, eliminazione, lettura e scrittura di file di testo

Creazione, eliminazione, lettura e scrittura di file di testo

Informatica. Prof. A. Longheu. Input e Output

LETTURA E SCRITTURA DI FILE

Corso sul linguaggio Java

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

Input/Output in Java

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

Fondamenti di Informatica C Esercitazioni di Laboratorio / 4 Outline

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

Lezione 16 programmazione in Java

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

LETTURA DI DATI DA INPUT

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

INPUT OUTPUT

Variabili e Metodi di classe Interfacce e Package File 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 - Stream

La paninoteca. Mi resta da scrivere solo costo()

Flussi, lettori e scrittori

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

Il linguaggio Java. Gli stream

I/O Streams in Java. Lorenzo Gallucci

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

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

Unità 2 I file binari

Gestione di file in Java

Input/Output in Java

Informatica I. Ingegneria Medica. Prof. Diego Salamon

Il linguaggio Java I file sequenziali

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

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

PROVA FINALE Ingegneria del software

Programmazione Orientata agli Oggetti in Linguaggio Java

PROVA FINALE Ingegneria del software

Corso sul linguaggio Java

Gestione dell I/O su File

Principi, Modelli e Applicazioni per Sistemi Distribuiti M

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

Programmazione distribuita in Java. Socket & Client-Server

Java I/O e serializzazione

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

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

Comunicare'con'il'mondo

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

10. File e loro attributi

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

Corso sul linguaggio Java

Corso sul linguaggio Java

domenica 9 giugno 13 Serializzazione

IL PACKAGE java.io CONCETTO BASE: LO STREAM

Architettura Client-Server

Note ed esercizi aggiuntivi

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

Le classi FileInputStream e RandomAccessFile. Semplici Algoritmi di Ordinamento

14 Input-Output. Outline. Goal della lezione. Argomenti. Mirko Viroli a.a. 2013/2014

Introduzione. Java. Streams. Streams

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

Programmazione in Java e gestione della grafica. Lezione 24

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

Indice. 1 Java I/O API. Indice

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

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

Sommario. I Uso degli oggetti 39

Sockets in Java. Lorenzo Gallucci

20 - Input/Output su File

Fondamenti di Informatica

Le basi del linguaggio Java

Riferimenti ad oggetti: Fondamenti di Informatica L-B Esercitazione n 4 Java: I/O, Costruttori e altro. Riferimenti ad oggetti: (Esempio)

Laboratorio di reti I: Java IO

PACKAGE DI I/O. Dott. Riccardo Zese.

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

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Primo esempio di un programma Java

Corso di Reti di Calcolatori L-A

Unità A1 I file testo

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Programmazione I - corso B a.a prof. Viviana Bono

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

Cifratura simmetrica

Gestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

Esercitazione 3. Corso di Tecniche di programmazione. Laurea in Ingegneria Informatica

10. File e loro attributi

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

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Il sistema I/O di Java

Java I/O e serializzazione

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Fornisce una interfaccia unificata per un insieme di interfacce di un sottosistema, rendendo più facile l uso di quest ultimo.

Eccezioni Precisazioni e approfondimenti

Transcript:

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 permette di operare con file su disco o è possibile recuperare informazioni sugli attributi del file o le directory sono considerate particolari tipi di file

File metodi principali (1) o canread() o return true se il file è leggibile o canwrite() o return true se il file è scrivibile o equals(object) o confronta il file con un altro o exists() o return true se il file esiste o getpath() o return il path relativo o getabsolutepath() o return il path assoluto (es. c:\prog\..\..)

File metodi principali (2) o isdirectory() o return true se esiste ed è una directory o isfile() o return true se esiste ed è un file o length() o return la dimensione del file in byte o list() o return in un array di Stringhe i nomi dei file presenti in una directory o mkdir() o crea una directory e restituisce true se ha avuto successo o renameto(file) o rinomina un file e restituisce true se ha successo

File - esempio File miofile = new File("costituzione.txt"); if (!miofile.exists()) { System.out.println("Il file " + miofile + " non esiste!"); return; System.out.println("Informazioni sul File " + miofile + ":\n"); String percorsorel = miofile.getpath(); // path relativo String percorsoass = miofile.getabsolutepath(); // path assoluto System.out.println("Path relativo = " + percorsorel); System.out.println("Path assoluto = " + percorsoass); System.out.println("Lunghezza = " + miofile.length() + " byte"); if(miofile.isdirectory()) System.out.println("File di tipo directory."); if(miofile.canread()) System.out.println("File leggibile."); if(miofile.canwrite()) System.out.println("File scrivibile.");

il concetto di flusso (stream) o un flusso (stream) è una sequenza continua e monodirezionale di informazioni che transitano da un entità a un altra o un programma può essere la sorgente o la destinazione di un flusso o l altra estremità può essere un altro programma, un file su disco, lo schermo, la tastiera o esempio: programma che legge informazioni da un file su disco o il file è la sorgente dello stream unidirezionale o il programma è la destinazione

classi Java per I/O o le classi per input/output sono contenute nel package java.io o sono una gerarchia di classi organizzate in una struttura di ereditarietà in cui le sottoclassi estendono e specializzano le funzionalità base

stream testuali e binari

InputStream o classe astratta o opera su sequenze di byte o offre metodi per leggere i singoli byte o tutti i metodi possono lanciare IOException

InputStream metodi principali o int read() o attende il prossimo byte poi ne restituisce il valore (0-255) o return -1 se il flusso è terminato o int available() o return il numero di byte leggibili senza attesa o long skip(long n) o salta i prossimi n byte dal flusso (se esistono) o return il numero di byte scartati o void close() o chiude il flusso e rilascia le risorse di sistema associate

FileInputStream (sottoclasse di InputStream) o permette di leggere il contenuto di un file o il file deve esistere ed essere leggibile o lettura sequenziale o dall inizio alla fine

FileInputStream esempio lettura carattere per carattere FileInputStream filedaleggere = null; int valoreletto; // leggo un int (1 byte sul file) char c; // carattere letto dal file filedaleggere = new FileInputStream("prova.txt"); try { valoreletto = filedaleggere.read(); while (valoreletto!=-1) { c = (char) valoreletto; System.out.print(c); valoreletto = filedaleggere.read(); catch (IOException e) { System.out.println("Errore: " + e + " nella lettura"); filedaleggere.close();

classi filtro o InputStream offre funzionalità minimali: o permette solo di leggere byte o classi filtro o arricchiscono le funzionalità o le prestazioni, interponendosi ad altre sorgenti o filtri o richiedono un InputStream da cui prelevare i dati o deve essere passato nel costruttore o trasformano i dati letti dal flusso o conversione di formato, memoria buffer

BufferedInputStream o BufferedInputStream e BufferedOutputStream non offrono metodi differenti o migliorano l efficienza bufferizzando gli accessi al file o FileReader e BufferedReader per lettura da file di testo

BufferedReader lettura riga String nomefile = "prova.txt"; try { String linea; File file = new File(nomeFile); FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); while (( linea = br.readline())!= null){ System.out.println(linea); br.close(); catch(ioexception e) { e.printstacktrace();

DataInputStream o DataInputStream e DataOutputStream forniscono metodi per la lettura di ogni tipo di dato o int, double, String

DataOutputStream - scrittura DataOutputStream out = new DataOutputStream( new FileOutputStream("ordini.dat")); double[] prezzo = { 1.88, 1.75, 2.01 ; int[] quantita = { 83, 78, 97 ; String[] descrizione = { "Mele", "Pere", "Arance"; for (int i = 0; i < prezzo.length; i ++) { out.writedouble(prezzo[i]); out.writeint(quantita[i]); out.writeutf(descrizione[i]); out.close();

DataOutputStream - lettura DataInputStream in = new DataInputStream(new FileInputStream("ordini.dat")); double prezzo; int quantita; String descrizione; double totale = 0.0; try { while (true) { prezzo = in.readdouble(); quantita = in.readint(); descrizione = in.readutf(); System.out.println("ordine Kg." + quantita + " " + descrizione + " Euro " + prezzo); totale += quantita * prezzo; catch (EOFException e) { System.out.println("Per un TOTALE di: Euro " + totale); in.close();

ObjectInputStream o con ObjectInputStream e ObjectOutputStream è possibile leggere e scrivere oggetti di classi serializzabili o una classe è serializzabile se implementa l interfaccia Serializable o Java.io.Serializable è un interfaccia senza metodi

Reader e Writer o classi per la lettura e scrittura dei file di testo o usiamo per semplicità le classi che operano sui byte (derivate da InputStream OutputStream) anche per operare con i file di testo

file ad accesso casuale o permettono di operare su un file in modo non sequenziale o lettura e scrittura possono avvenire in qualsiasi posizione del file indipendentemente dall operazione precedente o la classe RandomAccessFile modella il file come fosse un array di byte o memorizzato su disco, invece che in memoria o mantiene un puntatore di posizione interno che tiene traccia del prossimo byte a cui accedere o modificabile dal programmatore o è possibile operare sia in lettura che in scrittura

File ad accesso casuale DataInput DataOutput RandomAccessFile read( ) write( ) seek( pos ) File pos File Posizione in cui avverrà la prossima operazione

RandomAccessFile lettura o void seek(long pos) o posiziona il puntatore a pos byte dall inizio del file o long getfilepointer( ) o return la posizione corrente del puntatore rispetto all inizio del file o String readline( ) o legge una sequenza di caratteri ASCII terminata da newline e la converte in formato Unicode o String readutf( ) o legge una sequenza di caratteri Unicode codificati nel formato UTF-8 (che contiene la lunghezza della stringa) o altri metodi dell interfaccia DataInput o permettono di leggere tipi elementari (numeri interi, numeri in virgola mobile, caratteri e booleani)

RandomAccessFile scrittura o void writebytes(string s) o scrive la sequenza di byte corrispondenti ai caratteri contenuti in s o void writechars(string s) o scrive la sequenza di caratteri (due byte ciascuno) contenuti in s o void writeutf(string s) o scrive la rappresentazione della stringa s nel formato UTF-8 o altri metodi dell interfaccia DataOutput o permettono la scrittura di dati elementari

URL e Stream o uno stream può essere collegato a una sorgente dati diversa dal file o nell esempio lo stream in input fa riferimento a una pagina html che viene letta specificando l URL

esempio import java.io.*; import java.net.*; public class URLClient { public static void main(string[] args){ try { URL url=new URL("http://info.cern.ch/hypertext/WWW/TheProject.html"); URLConnection conn = url.openconnection(); BufferedReader reader = new BufferedReader( new InputStreamReader(conn.getInputStream())); String line = null; while ((line = reader.readline())!= null) System.out.println (line); reader.close(); catch (MalformedURLException e) { System.out.println("MalformedURLException durante la connessione"); catch (IOException e) { System.out.println("IOException durante la connessione");