Flussi, lettori e scrittori
|
|
|
- Camillo Paoli
- 10 anni fa
- Visualizzazioni
Transcript
1 Flussi, lettori e scrittori Per sequenze di byte, InputStream, OutputStream e loro sottoclassi. Es: InputStream in = ; int next = in. read(); if (next!= -1) byte b = (byte) next; Per sequenze di caratteri, Reader, Writer e loro sottoclassi Es: Reader reader = ; int next = reader. read(); if (next!= -1) char c = (char( char) next;
2 Operazioni di I/O con i File Leggere e scrivere sequenze di byte da file su disco: FileInputStream e FileOutputStream FileInputStream in = new FileInputStream( input. ( input.dat ); Leggere dati di testo da un file su disco: FileReader e FileWriter FileReader reader = new FileReader ( input.txt txt );
3 File di Testo La classe BufferedReader con readline() FileReader reader = new FileReader( ( inp.txt ); BufferedReader in = new BufferedReader(reader reader); String inputline = in.readline readline() (); double x = Double.parseDouble parsedouble(inputline); La classe PrintWriter print e println Alla fine: reader.close close() o, per un oggetto writer della classe PrintWriter, writer.close close()
4 La gerarchia delle eccezioni Eccezioni controllate Eccezioni non controllate
5 Esempio: una classe di prodotti import java.io.bufferedreader; import java.io.eofexception; import java.io.ioexception; public class Product { public Product() {... public Product(String aname,, double aprice, int ascore) ) {... public boolean read(bufferedreader in) throws IOException {... public String getname() {... public double getprice() {... public int getscore() {... public void setprice(double newprice) ) {... private String name; private double price; private int score;
6 Esempio: leggere prodotti da un file di testo public boolean read (BufferedReader in) throws IOException { name = in.readline(); // legge il nome del prodotto if (name == null) return false; String inputline = in.readline(); // legge il prezzo del prodotto if (inputline( == null) throw new EOFException ("EOF durante la lettura del prezzo"); price = Double.parseDouble(inputLine); // legge il punteggio del prodotto inputline = in.readline(); if (inputline( == null) throw new EOFException ("EOF durante la lettura del punteggio"); score = Integer.parseInt(inputLine); return true;
7 Esempio prodotti: gestire le eccezioni public void openfile() { BufferedReader in = null; try { // mostra la finestra di dialogo di scelta del file in = new BufferedReader (new FileReader(selectedFile)); readproducts(in); catch(filenotfoundexception e) { JOptionPane.showMessageDialog (null, "Nome del file errato. Prova di nuovo."); catch(ioexception e) { JOptionPane.showMessageDialog (null, "File alterato. Prova di nuovo.");."); finally { if (in!= null) try { in.close(); catch(ioexception e) { JOptionPane.showMessageDialog (null, "Errore" nella chiusura del file.");
8 Esempio prodotti: gestire le eccezioni public void readproducts(bufferedreader in) throws IOException { boolean done = false; while (!done) { Product p = new Product(); if (p.read(in)) panel.addproduct(p); else // ha letto ultimo prodotto done = true;
9 Accesso sequenziale e accesso casuale
10 Accesso sequenziale
11 Record a dimensione variabile e a dimensione fissa
12 Programma Database.java import java.io.ioexception; import java.io.randomaccessfile; public class Database { public static void main(string[] args) { ConsoleReader console = new ConsoleReader(System.in); System.out.println ( Inserire il nome del file di dati:"); String filename = console.readline(); try { RandomAccessFile file = new RandomAccessFile(filename, "rw"); long nrecord = file.length() / RECORD_SIZE; boolean done = false; while (!done) { System.out.println ( Indicare il record da aggiornare (1 - " + nrecord + "), nuovo record (0), uscire (-1)"); int pos = console.readint();
13 if (1 <= pos && pos <= nrecord) // aggiorna il record { file.seek((pos - 1) * RECORD_SIZE); Product p = readproduct(file); System.out.println( Trovato + p.getname() + + p.getprice() + + p.getscore()); System.out.println ( Immettere il nuovo prezzo:"); double newprice = console.readdouble(); p.setprice(newprice); file.seek((pos - 1) * RECORD_SIZE); writeproduct(file, p); else if (pos == 0) // aggiunge un record { System.out.println( Immettere il nuovo prodotto:"); String name = console.readline(); System.out.println( Immettere il prezzo:"); double price = console.readdouble(); System.out.println( Immettere il punteggio:");
14 int score = console.readint(); Product p = new Product(name, price, score); file.seek(nrecord * RECORD_SIZE); writeproduct(file, p); nrecord++; else if (pos == -1) done = true; file.close(); catch(ioexception e) { System.out.println( Eccezione Input/Output + e);
15 /** Legge una stringa di lunghezza f il file dal quale size il numero di caratteri da la stringa alla quale sono stati tolti gli spazi eccedenti */ public static String readfixedstring(randomaccessfile f, int size) throws IOException { String b = "; for (int i = 0; i < size; i++) b += f.readchar(); return b.trim(); /** Scrive una stringa di lunghezza f il file sul quale size il numero di caratteri da scrivere */
16 public static void writefixedstring(randomaccessfile f, String s, int size) throws IOException { if (s.length() <= size) { f.writechars(s); for (int i = s.length(); i < size; i++) f.writechar( '); else f.writechars(s.substring(0, size)); /** Legge un record di un f il file dal quale il prodotto successivo memorizzato nel file. */
17 public static Product readproduct(randomaccessfile f) throws IOException { String name = readfixedstring(f, NAME_SIZE); double price = f.readdouble(); int score = f.readint(); return new Product(name, price, score); /** Scrive un record di un f il file sul quale scrivere */
18 public static void writeproduct(randomaccessfile f, Product p) throws IOException { writefixedstring(f, p.getname(), NAME_SIZE); f.writedouble(p.getprice()); f.writeint(p.getscore()); public static final int NAME_SIZE = 30; public static final int CHAR_SIZE = 2; public static final int INT_SIZE = 4; public static final int DOUBLE_SIZE = 8; public static final int RECORD_SIZE = CHAR_SIZE * NAME_SIZE + DOUBLE_SIZE + INT_SIZE;
19 File di database relazionali
20 Flussi di Oggetti Per scrivere e leggere oggetti possiamo scomporli nelle loro parti elementari e scrivere e leggere queste parti, ma... In Java c è una soluzione più semplice: le classi ObjectOutputStream e ObjectInputStream In un solo colpo scriviamo o leggiamo interi oggetti!
21 L Interfaccia Serializable public class Razionale implements Serializable,,... { Razionale r = new Razionale(3,5); ObjectOutputStream out = new ObjectOutputStream (new FileOutputStream( dati.dat )); out.writeobject (r);
22 o, ancora meglio... Possiamo scrivere (o leggere) in un solo colpo intere collezioni di oggetti: Vector v = new Vector(); String s = Console.readString(); Razionale r = Razionale.parseRaz(s); v.add(r); ObjectOutputStream out = new ObjectOutputStream (new FileOutputStream( dati.dat )); out.writeobject (v);
20 - Input/Output su File
20 - Input/Output su File Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
Cifratura simmetrica
Cifratura Cifratura simmetrica Alice canale insicuro Bob 2 Cifratura simmetrica m Algoritmo di decifratura m Alice canale insicuro Algoritmo di cifratura Bob 3 Cifrari simmetrici chiave privata k chiave
C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo
File e Flussi C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo trad. Nicola Fanizzi corso di Programmazione, CdS: Informatica TPS Dip. di Informatica, Università degli studi di Bari
Input/Output in Java
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
Corso sul linguaggio Java
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 gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni
La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.
Chat. Si ha un server in ascolto sulla porta 4444. Quando un client richiede la connessione, il server risponde con: Connessione accettata.
Chat Si ha un server in ascolto sulla porta 4444 Quando un client richiede la connessione, il server risponde con: Connessione accettata. Nome: Il client deve rispondere con lo user name A questo punto
File, flussi e pacchetto java.io
File, flussi e pacchetto java.io Formato binario e formato di testo I dati sono memorizzati nei files in due formati: testo (successione di caratteri) binario (successione di bytes) Ad es. numero 12345
INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002.
INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002 Esercizio 4) import fiji.io.simplereader; class Programma{ public static
Input e Output in Java
Input e Output in Java Stream Redirecting Scomposizione dell input Uso di file Set di caratteri 1 Inserimento dati e test Riconsideriamo la versione iniziale della classe DataSet usata per illustrare le
Operazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni
Operazioni di input/output Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Input /Output introduzione Per ottenere delle informazioni un programma apre un flusso (Stream)
Jav@Lab Il linguaggio Java I file sequenziali
Jav@Lab Il linguaggio Java I file sequenziali Input e Output Secondo i canoni dei linguaggi di programmazione "procedurali" il concetto di input e output è strettamente legato al tipo di dispositivo esterno
Gestione delle Eccezioni
Gestione delle Eccezioni Condizioni di Errore Una condizione di errore in un programma può avere molte cause Errori di programmazione Divisione per zero, cast non permesso, accesso oltre i limiti di un
Esercitazione 6. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008
Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Esercitazione 6 Corso di Tecniche di programmazione Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 10 Strutture collegate - 2 A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Strutture collegate - 2 1 Contenuti!Strutture
Corso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA1 1.3 - Le strutture di controllo 1 Prerequisiti Istruzioni semplici Strutture di controllo Scittura di semplici applicazioni Java 2 1 Introduzione In molti casi le
/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }
import java.util.*; class coda * Questa classe contiene tutti i metodi per la gestione della coda * @author D'Ambrosio Giovanni Classe 4D I.T.I.S. Grottaminarda * @version 26/02/2010 * VETTORE DINAMICO
Corso di Reti di Calcolatori L-A
Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 2 (svolta) Socket Java con connessione Luca Foschini Anno accademico 2009/2010 Esercitazione 2 1 Architettura
JAVA INTRODUZIONE C++ JDK e JRE API IDE (BLUEJ) JAVA Introduzione. Versioni e IDE DIAPOSITIVA 2 ALESSANDRO URSOMANDO
JAVA JAVA Introduzione INTRODUZIONE C++ JDK e JRE API IDE (BLUEJ) Cross Platform Web Dinamico Versioni e IDE DIAPOSITIVA 2 1 JAVA La programmazione orientata agli oggetti JAVA La programmazione OOP Nascita
Introduzione. Java. Streams. Streams
Java il sistema di I/O G. Prencipe [email protected] Introduzione La gestione del sistema di I/O è una parte fondamentale di qualsiasi linguaggio di programmazione In questa lezione approfondiremo la
Architettura Client-Server
Architettura Client-Server 1. il client manda una richiesta al server 2. il server (in attesa) riceve la richiesta 3. il server esegue il servizio richiesto (generando un thread concorrente) 4. il server
Esercitazioni Ingegneria del So2ware 3 - Programmazione Java Excep<ons, I/O
Esercitazioni Ingegneria del So2ware 3 - Programmazione Java Excep
ProgettAzione tecnologie in movimento - V anno Unità 4 - Realizzare applicazioni per la comunicazione in rete
ProgettAzione tecnologie in movimento - V anno Unità 4 - Realizzare applicazioni per la comunicazione in rete Compito in classe proposto Realizzare un applicazione C/S per trasferire al Client il contenuto
Corso di Reti di Calcolatori. java.net.url
Corso di Reti di Calcolatori UNICAL Facoltà di Ingegneria a.a. 2002/2003 Esercitazione sul networking in Java (2 a parte) [email protected] 1 java.net.url URL (String spec) crea un oggetto URL
10.4. La classe File e gli attributi di directory e file
pag.143 10.4. La classe File e gli attributi di directory e file Questa classe, molto utile per operare con i file su disco, consente di accedere alle directory, verificare e acquisire le caratteristiche
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
Pila di Oggetti Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA Uff. 0577 234850 - interno: 7102 [email protected] http://www.dii.unisi.it/~rigutini/
Esercitazioni aggiuntive Martedì 14-17 -- Laboratorio L-12
Laboratorio LP2 Esercitazioni aggiuntive Martedì 14-17 -- Laboratorio L-12 [email protected] Esercizio P14.8 Scrivete un programma Find che cerchi in tutti i file specificati sulla riga di comando una
Algoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
Università degli Studi di Modena e Reggio Emilia. Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB. Http con java, URL
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB Http con java, URL Ing. Marco Mamei Anno Accademico 2004-2005 M. Mamei - Tecnologie
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:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP
(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP D (FKR&OLHQWH6HUYHU Sviluppare un applicazione C/S in cui: il server attende una connessione da parte del client (su MDYDQHW6HUYHU6RFNHW), usa la
Parcheggio.rtf 1/8 6 gennaio 2009. Prova di programmazione: parcheggio a pagamento
Parcheggio.rtf 1/8 6 gennaio 2009 Prova di programmazione: parcheggio a pagamento Si sviluppi il codice per la gestione di un parcheggio a pagamento mediante la classe Parcheggio, che ospita le auto rappresentate
ARRAY BIDIMENSIONALI float [][] mx = new float[3][4]; (float []) [] mx = new float[3][4];
ARRAY BIDIMENSIONALI Si possono definire array di qualunque tipo di dato, quindi anche di altre array float [][] mx = new float[3][4]; ovvero.. (float []) [] mx = new float[3][4]; La loro motivazione (storica)
Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario La classe String Lettura da input di dati numerici (tipo int) Stampa di dati numerici Uno sguardo al codice Esercizi 21/03/2011 2
Prova d Esame 07.04.2006 Compito A
DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "Ciao"; protected int n; public General() { n = 1; public
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record
Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono
Operazioni di scrittura e lettura con periferici in linguaggio Java
Operazioni di scrittura e lettura con periferici in linguaggio Java Flussi logici (stream) di output Operazione di scrittura a monitor con uso di stream (flusso logico) di output RAM System.out.println
3. La sintassi di Java
pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer
SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica
SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Esercitazioni di PROGETTAZIONE DEL SOFTWARE (Corsi di Laurea in Ingegneria Informatica ed Automatica ed Ingegneria
Esempi di esercizi d esame
Esempi di esercizi d esame Fondamenti di Informatica L-B 1 Cellulare Testo esercizio: 1.Specifiche Si richiede di realizzare una classe che implementa il funzionamento di un telefono cellulare Tale classe
Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio
Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 30 maggio 2014 Introduzione Un programma diviso in sezioni distinte Un approccio alla
Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)
Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Soluzioni delle prove al calcolatore Esercizio 7 (esame del 08/01/2009) class TabellaDiNumeri{ private double[][] tabella;
Il sistema I/O di Java
Programmazione Java:. Il sistema I/O di Java [email protected] http://www.di.univaq.it/romina.eramo/tlp Roadmap Stream I/O Gestione di stream byte oriented Filtri Gestione di stream char oriented
Esercizi della lezione 5 di Java
Esercizi della lezione 5 di Java Esercizio 5 Create il tipo di dato Counter dell Esercizio 1 come sottoclasse del tipo di dato SimpleCounter. Esercizio 1 Create un tipo di dato Counter che abbia: un valore
La gestione di file e flussi in Java: note introduttive
Università degli Studi di Palermo Facoltà di Ingegneria La gestione di file e flussi in Java: note introduttive Edoardo Ardizzone & Riccardo Rizzo Appunti per il corso di Fondamenti di Informatica A.A.
Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011
Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Testo Il database di un videonoleggio è costituito da due vettori paralleli.
Input/Output. Lettura di una serie di numeri: Un programma che analizza una serie di valori. Inserimento dati e test
Input/Output Stream Redirecting Scomposizione dell input Uso di file Lettura di una serie di numeri: Un esempio di ciclo e mezzo. Schema: boolean finito = false; while (!finito) { String input = legge
Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006
Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006 Si noti che le soluzioni ai quesiti saranno considerate
Programmazione 2. Input Output su Stream e File
Programmazione 2 Input Output su Stream e File Stream In generale ogni programma ha un flusso (stream) di dati in input ed uno in output. Stream di input Stream di output Input/Output in Java Il package
Uno stream o flusso di dati o canale è un percorso di comunicazione tra la sorgente di una certa informazione e la sua destinazione.
pag.112 9. Input e output Nell informatica classica il concetto di input e output era strettamente legato all uso dei dispositivi esterni di memorizzazione (dischi, nastri) e quindi al concetto di file,
Servlet e JDBC. Servlet e Web Server. Servlet e Web Server. Servlet e Web Server. Richieste. Servlet. Servlet:
e JDBC Programmazione in Rete e Laboratorio Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149 Torino e : estensioni del Java API permettono di scrivere
COMPITO DI LABORATORIO DI PROGRAMMAZIONE 2001-2002 17 Luglio 2002. Soluzione degli Esercizi
COMPITO DI LABORATORIO DI PROGRAMMAZIONE 2001-2002 17 Luglio 2002 degli Esercizi ESERCIZIO 1. Si consideri il seguente frammento di codice in linguaggio Java: int i=0, j=0; int[][] a=b; boolean trovato=false;
