Corso sul linguaggio Java



Documenti analoghi
Il linguaggio Java I file sequenziali

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

20 - Input/Output su File

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

Input/Output in Java

Corso di Reti di Calcolatori L-A

Parte II: Reti di calcolatori Lezione 10

Corso sul linguaggio Java

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

Flussi, lettori e scrittori

Introduzione al Linguaggio C

Corso di Informatica

Gestione dei File in C

Gestione delle Eccezioni

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

I file di dati. Unità didattica D1 1

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:

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP

Operazioni di scrittura e lettura con periferici in linguaggio Java

Corso sul linguaggio Java

Le variabili. Olga Scotti

Input e Output in Java

Architettura dei computer

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

Unità B3 Strutture di controllo

Introduzione alla programmazione in C

LAVORI ESTIVI DI INFORMATICA PER LA CLASSE IV Sez. Ainf (Prof. Tessore Luca)

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

Programmare con le Socket TCP in java. 2: Application Layer 1

Algoritmi di Ricerca. Esempi di programmi Java

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

Cifratura simmetrica

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

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

Programmare con le Socket

Le stringhe. Le stringhe

Programmare in Java. Olga Scotti

Programmare con le Socket TCP

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

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

10 - Programmare con gli Array

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

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

INFORMATICA, IT e ICT

Architettura di un computer

Introduzione. Java. Streams. Streams

Architettura Client-Server

Gestione dei File. dischi nastri cd

Sistemi Operativi. 11 LEZIONE INTERFACCIA DEL FILE SYSTEM CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08

Tecnologie Web L-A. Java e HTTP. Dario Bottazzi Tel , dario.bottazzi@unibo.it, SkypeID: dariobottazzi. Java e TCP/IP in a Nutshell

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Il Personal Computer. Cos è Lo schema di massima Che cosa ci possiamo fare. 1

Il file system. meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate. in memoria di massa

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

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Prova di Laboratorio di Programmazione

Lab 11 Gestione file di testo"

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Access. P a r t e p r i m a

Main System Monitor Keyboard

Il File System. Il file system

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

Informatica - A.A. 2010/11

Introduzione JDBC interfaccia java.sql driver caricare i driver

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

Il Sistema Operativo: il File System

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

Programmazione in Java e gestione della grafica (I modulo) Lezione 1: Presentazione corso

Esame di INFORMATICA

TECNICHE AVANZATE DI I/O. Al loro livello più basso, tutti i file scritti sull hard disk. Training per esperti SU FILE

ESERCIZIO 1 (b) Dove è memorizzato il numero del primo blocco del file? Insieme agli altri attributi del file, nella cartella che contiene il file.

Java: Compilatore e Interprete

Codifica: dal diagramma a blocchi al linguaggio C++

Prova di recupero di Informatica B Corsi di Laurea in Ingegneria Meccanica prof. Francesco Amigoni 20 febbraio 2004

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

Corso di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Corso di Informatica

Esercitazioni aggiuntive Martedì Laboratorio L-12

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

Transcript:

Corso sul linguaggio Java Modulo JAVA6 A1 I file testo 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Modello produttore consumatore Operazioni logiche su struttura file 2 1

Introduzione La necessità di memorizzare grandi quantità di dati in modo permanente su memoria secondaria (dischi) viene soddisfatta facendo in modo che le applicazioni Java siano in grado di leggere e scrivere dati su disco in aree dette file. Tutti i moderni linguaggi di programmazione, in particolare i linguaggi object-oriented, trattano i file in modo astratto con il nome di flusso (stream). In questa Unità vediamo come attraverso il concetto di stream un applicazione sia in grado di usare la memoria di massa per registrare dati di qualunque tipo. 3 Gli stream Uno stream può essere visto come un qualsiasi canale di comunicazione tra un sorgente (processo produttore) ed un destinatario (processo consumatore). Sorgente Destinatario Possiamo avere: stream di input: trasferiscono dati da un sorgente al programma stream di output: trasferiscono dati dal programma ad un destinatario 4 2

Esempi di stream PRODUTTORE Tastiera Hard disk Stream di input CONSUMATORE Programma Programma Stream di output Hard disk Monitor 5 I file Nelle considerazioni che faremo, in un qualunque stream consideriamo come sorgente e come destinatario un file, ossia una sequenza di dati. In questo modo una sequenza di dati su disco, la tastiera, il monitor, il modem o uno scanner possono essere visti come file. In particolare consideriamo i file sequenziali, ossia quei file in cui per accedere ad una data informazione è necessario scandire tutte le precedenti. L informazione viene letta o scritta serialmente, con modalità FIFO 6 3

Tipi di file In Java possiamo considerare: file testo, formati da caratteri (UNICODE, 16 bit) e stringhe e leggibili mediante un qualunque editor di testi (in questa Unità) file binari, formati da sequenza di byte (Unità successive) file di tipi primitivi (Unità successive) file di oggetti (Unità successive) A ciascuno di questi tipi corrispondono opportune classi che vedremo con i relativi metodi. 7 Stream testo Le classi orientate al carattere sono Reader (per gli stream di input) e Writer (per gli stream di output) che sono classi astratte, per cui, normalmente usiamo le loro sottoclassi indicate in figura. Reader: contiene una parziale implementazione e le API (metodi e attributi) per realizzare stream che leggono caratteri Writer: contiene una parziale implementazione e le API (metodi e attributi) per realizzare stream che scrivono caratteri Le sottoclassi di Reader e Writer implementano stream specializzati 8 4

Stream testo standard InputStreamReader per lo stream standard input (tastiera) OutputStreamWriter per lo stream standard output (video) Metodi: int read() legge un carattere come intero dallo stream (-1 se il file è finito) void write (char c) stampa a video il carattere c void close() chiude lo stream 9 Stream testo standard import java.io.*; class streamstandard { InputStreamReader stdin; // attributi OutputStreamWriter stdout; public streamstandard() // costruttore { stdin = new InputStreamReader(System.in); stdout = new OutputStreamWriter(System.out); public static void main(string args[]) throws Exception { int c; streamstandard ss = new streamstandard(); while ((c=ss.stdin.read())!='*') { ss.stdout.write((char)c); ss.stdout.flush(); // altrimenti stampa solo alla fine ss.stdin.close(); ss.stdout.close(); Questa applicazione legge da input una serie di caratteri. Quando lo stream di input termina (Ctrl-Z) la serie viene stampata (provare da linea di comando) Standard input Standard output 10 5

Stream testo su disco FileReader per stream di input su disco FileWriter per stream di output su disco Metodi: int read() legge un carattere come intero dallo stream (-1 se stream finito) void write (char c) scrive il carattere c nello stream void close () chiude lo stream 11 Stream testo su disco import java.io.*; class copiafile { FileReader fin; // attributi FileWriter fout; public copiafile() throws IOException, FileNotFoundException { fin = new FileReader("Testoin.txt"); // costruttore fout = new FileWriter("Testoout.txt"); public static void main(string args[]) throws IOException, FileNotFoundException { int c; copiafile cf = new copiafile(); while((c=cf.fin.read())!=-1) { cf.fout.write((char)c); cf.fin.close(); cf.fout.close(); Questa applicazione legge uno ad uno i caratteri da uno stream su disco e li copia in uno stream di output sempre su disco. 12 6

Stream testo su disco 1. Inserire sempre il controllo delle eccezioni, in particolare IOException e FileNotFoundException 2. Volendo evitare il blocco try-catch si può scrivere public static void main(string args[]) throws IOException, FileNotFoundException { 3. FileWriter fout = new FileWriter("Testoout.txt, true); In questo caso i nuovi dati vengono aggiunti a quelli esistenti 13 Stream testo su disco ATTIVITA : scrivere una applicazione leggiscrivitesto.java che acquisisca da standard input una serie di caratteri fino all immissione di un * e la scriva in un file testo testo.txt. ATTIVITA : scrivere una applicazione che acquisisca da standard input una serie di numeri interi terminata da uno 0, la memorizzi in un file testo numeri.dat e la restituisca successivamente in stampa a video. 14 7

Stream testo bufferizzati Per migliorare l efficienza si usa la bufferizzazione, ossia la presenza di un area di memoria (buffer) interposta fra sorgente e destinatario. La bufferizzazione richiede classi di input e di output apposite che vedremo fra breve. Quando si usa la bufferizzazione, occorre concatenare gli oggetti dello stream aperto con quelli del buffer da utilizzare. Un esempio, che abbiamo spesso utilizzato è: InputStreamReader In = new InputStreamReader (System.in); BufferedReader tastiera = new BufferedReader (In); Il primo oggetto rappresenta lo stream usato come input; il secondo oggetto, concatenato con il primo è quello che possiede i metodi effettivi per leggere (ad es. readline()). 15 Stream testo bufferizzati Le classi di bufferizzazione per i file testo sono:. BufferedReader per streaam bufferizzati di input BufferedWriter per stream bufferizzati di output Metodi: String readline() legge una stringa (null se lo stream è finito) void write (String s) scrive la stringa s nello stream di output void newline() inserisce un a capo nello stream di output void close () chiude lo stream 16 8

Stream testo bufferizzati import java.io.*; class copiatesto { public static void main(string args[]) IOException, FileNotFoundException { String s; FileReader fin = new FileReader( Testoin.txt ); BufferedReader bufin = new BufferedReader (fin); FileWriter fout = new FileWriter ( Testoout.txt, false); BufferedWriter bufout = new BufferedWriter (fout); while((s=bufin.readline())!=null) { bufout.write(s); bufout.newline(); bufin.close(); bufout.close(); ATTIVITA : scrivere un applicazione che legga una ad una le righe di uno stream su disco e le copi in uno stream di output su disco (usare la bufferizzazione) Il controllo di fine stream richiede null Sostituiscono blocco try-catch 17 Argomenti Gli stream Esempi di stream I file Tipi di file Stream testo Stream testo standard Stream testo su disco Stream testo bufferizzati 18 9

Altre fonti di informazione P.Gallo, F.Salerno Java, ed. Minerva Italica M. Bigatti Il linguaggio Java, ed. Hoepli 19 10