Università degli studi di Bergamo Informatica II Programmazione Object Oriented Tutorato Lezione 5 Dott. Marco Guarnieri Dott. Eros Magri 05.10.11 File ● ● ● java.io.File è la classe principale che lavora con file e folder. Un'istanza di tale classe rappresenta un file o una cartella nel filesystem E' indipendente dal sistema operativo. Per il separatore usare java.io.File.separator File(path) Se il path e' assoluto crea un oggetto File per tale path. Se il path e' relativo crea l'oggetto File per il file con tale path nella directory di default File(dirpath,fna Crea l'oggetto File con il path relativo alla me) directory passata 2 File f.exists() Ritorna true se il file esiste f.isFile() Ritorna true se f e' un file normale f.isDirectory() Ritorna true se f e' una directory f.getName() Ritorna il nome del file o directory f.length() Ritorna la dimensione in bytes del file f.getPath() Ritorna il path del file f.delete() Cancella il file f.renameTo(f2) Rinomina f in f2. Ritorna true in caso di successo f.createNewFile() Crea un nuovo file 3 Stream ● ● Java utilizza il concetto di stream e cioe' flussi di dati (byte) Per accedere agli stream solitamente si utilizzano sottoclassi di java.io.Reader e java.io.Writer 4 Scrivere i File ● Useremo: ● ● ● ● FileWriter: Convenience class for writing character files. BufferedWriter: Writes text to a character-output stream, buffering characters so as to provide for the efficient writing of single characters, arrays, and strings. FileOutputStream: A file output stream is an output stream for writing data to a File or to a FileDescriptor. DataOutputStream: A data output stream lets an application write primitive Java data types to an output stream in a portable way. 5 Leggere i File ● Useremo: ● ● ● ● ● FileInputStream: A FileInputStream obtains input bytes from a file in a file system. DataInputStream: A data input stream lets an application read primitive Java data types from an underlying input stream in a machine-independent way. InputStreamReader: An InputStreamReader is a bridge from byte streams to character streams: It reads bytes and decodes them into characters using a specified charset. BufferedReader: Reads text from a character-input stream, buffering characters so as to provide for the efficient reading of characters, arrays, and lines. FileReader: Convenience class for reading character files. 6 Esercizio 19 ● Si scriva un'applicazione che gestisce i prodotti di un bar (nome, prezzo) e che permette di stampare su file uno scontrino nel seguente formato: [nomeprodotto1, prezzoUnitarioInCentesimi, quantità]\n [nomeprodotto2, prezzoUnitarioInCentesimi, quantità]\n : : {“totale”, totaleComplessivoInCentesimi} 7 Esercizio 19 ● Un esempio di scontrino puo' essere: [Coca Cola, 300, 1]\n [Bionda media, 450, 2]\n [Caffe, 100, 3]\n {totale, 1500} 8 Esercizio 20 ● ● Si scriva un'applicazione complementare alla precedente che legga il file nel formato illustrato prima e ne stampi a video la lista di prodotti singoli acquistati. Piu' prodotti uguali vanno ripetuti Per lo scontrino mostrato prima l'output sarà: Coca Cola Bionda Media Bionda Media Caffe Caffe Caffe 9 Esercizio 21 ● ● Le Application Programming Interface API (Interfaccia di Programmazione di un'Applicazione), sono ogni insieme di procedure disponibili al programmatore, di solito raggruppate a formare un set di strumenti specifici per un determinato compito. [Wikipedia] Si progetti e costruisca una API che permetta di salvare su file almeno oggetti semplici (per le collezioni e' un po' piu' complesso) 10 Esercizio 21 11