Creazione, eliminazione, lettura e scrittura di file di testo

Documenti analoghi
Creazione, eliminazione, lettura e scrittura di file di testo

A. Ferrari Stream e File

LETTURA E SCRITTURA DI FILE

A. Ferrari Java: Stream e File

Lettura e scrittura - Stream

Programmazione ad Oggetti

Corso sul linguaggio Java

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

Eccezioni Precisazioni e approfondimenti

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Note ed esercizi aggiuntivi

Note ed esercizi aggiuntivi

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

Programmazione distribuita in Java. Socket & Client-Server

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

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

Programmazione Orientata agli Oggetti in Linguaggio Java

ESERCIZIO 1 (FILE DI TESTO)

Informatica I. Ingegneria Medica. Prof. Diego Salamon

Lettura e scrittura - Stream

Fondamenti di Informatica

Array. Definizione e utilizzo di vettori

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

Informatica. Prof. A. Longheu. Input e Output

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

Principi, Modelli e Applicazioni per Sistemi Distribuiti M

Lezione 16 programmazione in Java

Capitolo 13: Gestione delle eccezioni. Capitolo 13. Gestione delle eccezioni Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2

Corso di Telematica II

Unità A1 I file testo

La gestione delle eccezioni

Programmazione in Java

Lettura e scrittura di file di dati

// Costante utilizzata per definire il numero massimo di serie che il programma può generare.

Variabili e Metodi di classe Interfacce e Package File in Java

Eccezioni. Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi.

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

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:

Gestione dell I/O su File

LETTURA DI DATI DA INPUT

Fondamenti di Informatica L-B Esercitazione n 5 Java: Interfaccia Comparable, Array

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

Laboratorio di Informatica Lezione 4

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Corso sul linguaggio Java

RETI DI CALCOLATORI Linguaggio Java: Eccezioni

Input/Output in Java

Corso sul linguaggio Java

INPUT OUTPUT

Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso

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

Corso sul linguaggio Java

Unità A1 Funzioni MODULO Java 2

System.out.print("\tATTENZIONE: hi inserito un valore non valido!\n");

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

Corso di Reti di Calcolatori T

Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java

FileInputStream read() read(byte[]) readint() DataInputStream FileInputStream EOFException

Università degli Studi di Bologna Scuola di Ingegneria

Input. Il tipo char Alcune modalità di acquisizione di input. Laboratorio di Programmazione - Luca Tesei

Corso di Reti di Calcolatori L-A

Il package java.io fornisce le classi necessarie per effettuare input e output su file/rete/console/aree di memoria RAM eccetera.

Fondamenti di Informatica C Esercitazioni di Laboratorio / 4 Outline

Esempio: Tombola! Vogliamo progettare una applicazione che realizza il gioco della tombola Versione semplificata: un banco, un

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

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

Fondamenti di informatica T-1 (A K) Esercitazione 4: controllo del flusso

GESTIONE DEGLI ERRORI

GESTIONE DEGLI ERRORI

Sistemi Operativi Teledidattico

{4, 4, 2, 9, 13} {2, 2, 9, 13, 0} {0, 4, 2, 9, 13} {2, 9, 13, 0, 0}

Esempio su strutture dati dinamiche: ArrayList

Introduzione a Java e all'ambiente di sviluppo

PROVA FINALE Ingegneria del software

Java, Oggetti e Strutture Dati di G. Callegarin - Edizioni CEDAM

Automazione di test. Si presuppone la conoscenza del documento XML.pdf. Un package per i test automatizzati

Input/Output in Java

Flussi, lettori e scrittori

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

Iterazioni. L istruzione while. while (condition) istruzione

Anno Accademico 2003/04. Docente modulo 1: Annalisa De Bonis. Ripete l esecuzione di statement fino a che la condizione e` verificata

Java Gli array. Array

Prova d Esame Compito A

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

FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni

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

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

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Principi, Modelli e Applicazioni per Sistemi Distribuiti M

Laboratorio di Sistemi Serializzare mediante file Java

Le basi del linguaggio Java

Corso: Fondamenti di Informatica (Canale 5) a.a Corsi di laurea: Ing. Settore Informazione

import java.io.*; char sceltautente = '_'; boolean condizionesn = true; boolean condizionedowhile = true; boolean condizioneprogramma = true;

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

import java.io.*; double massa = 0.0; double velocità = 0.0; double coefficienteattrito = 0.0; int numeroveicoli = 0;

import java.io.*; Pag. 1 di 9

Transcript:

Creazione, eliminazione, lettura e scrittura di file di testo Java mette a disposizione degli sviluppatori diverse classi per lavorare con i file di testo, analizziamo le principali: java.io.file La classe File è una rappresentazione astratta di un file o di una directory. Permette di lavorare a livello più alto, come ad esempio creare un file vuoto, eliminarlo, ricercarlo o rinominarlo. java.io.filereader La classe FileReader permette di leggere, uno alla volta, i caratteri contenuti in un file di testo. java.io.bufferedreader La classe BufferedReader è simile alla classe FileReader ma permette di leggere i caratteri presenti nel file in blocchi. I caratteri letti vengono memorizzati in un buffer temporaneo. Quando i dati vengono richiesti, vengono letti dal buffer, quindi le prestazioni migliorano notevolmente non dovendo ogni volta avere l ok del sistema operativo per accedere al file system. java.io.filewriter La classe FileWriter permette di scrivere i caratteri in un file di testo uno alla volta. java.io.bufferedwriter La classe BufferedWriter è simile alla classe FileWriter ma permette di scrivere i caratteri nel file in blocchi. I caratteri vengono memorizzati temporaneamente in un buffer temporaneo. Periodicamente i caratteri vengono letti dal buffer e scritti fisicamente sul file, quindi, anche in questo caso, le prestazioni migliorano notevolmente. Java.io.PrintWriter La classe PrintWriter è simile alla classe BufferedWriter ma permette di scrivere nel file stringhe formattate. Per prendere confidenza con queste classi, analizziamo dei semplicissimi esempi:

Listato 1. Creazione di un file vuoto public static void newfile() /* si assegna un percorso al file, * diversamente il file creato viene creato nella stessa cartella in cui * vengono salvati gli altri file di eclipse, * si consiglia di non indicare il percorso finché non si avrà buona * padronanza nella gestione dei file, tenendo ben presente che può * sempre essere fatto*/ try // potrebbe generare errore nel caso non si indichi il percorso completo if (file.exists()) System.out.println( Il file + path + esiste ); else if (file.createnewfile()) System.out.println( Il file + path + è stato creato ); else System.out.println( Il file + path + non può essere creato ); catch (IOException e) Il costruttore della classe File riceve in ingresso il path del file. La creazione di un istanza di File non genera la creazione fisica del file sul disco fisso; occorre chiamare il metodo createnewfile() per crearlo fisicamente. Se proviamo a lanciare l esempio, la prima volta il file verrà creato, la seconda volta invece verrà stampato che il file è già presente poiché il metodo exists restituirà true. I metodi principali della classe File sono i seguenti: exists() che restituisce true se il file esiste, false altrimenti. createnewfile() che crea effettivamente il file sul disco. delete() che elimina il file dal disco. isfile() che restituisce true se si tratta di un file, false altrimenti. isdir() che restituisce true se si tratta di una directory, false altrimenti. mkdir() che permette di creare una directory. Alcune operazioni possono generare diverse eccezioni di I/O qualora per qualche motivo il file non può essere creato, eliminato, rinominato o altro.

Listato 2. Scrittura di un file - simile all esempio da noi proposto public static void writefile() try FileWriter fw = new FileWriter(file); fw.write( Questo è il nostro primo file ); fw.flush(); fw.close(); catch(ioexception e) il costruttore della classe FileWriter riceve in ingresso un istanza della classe File. I metodi principali della classe FileWriter sono i seguenti: write(string) scrive la stringa sul file. close() chiude il descrittore del file. Come abbiamo detto in precedenza la classe FileWriter scrive un singolo carattere alla volta. Per ottimizzare l operazione, possiamo utilizzare la classe BufferedWriter. Per il programmatore non cambia molto ma sicuramente viene ottenuto un vantaggio in termini di prestazioni. Il costruttore della classe BufferedWriter riceve in ingresso un istanza della classe FileWriter. Il metodo per scrivere è sempre write(). Listato 3. Scrittura di un file con BufferWriter public static void writefile2() try FileWriter fw = new FileWriter(file); BufferedWriter bw = new BufferedWriter(fw); bw.write( Questo è il nostro primo file ); bw.flush(); bw.close(); catch(ioexception e)

Listato 4. Lettura di un file di testo public static void readfile() char[] in = new char[50]; int size = 0; try FileReader fr = new FileReader(file); size = fr.read(in); System.out.print( Caratteri presenti: + size + \n ); System.out.print( Il contenuto del file è il seguente:\n ); for(int i=0; i<size; i++) System.out.print(in[i]); fr.close(); catch(ioexception e) Il costruttore della classe FileReader riceve in ingresso un istanza della classe File. I metodi principali per della classe sono i seguenti: read(char[n]) legge n caratteri dal file, uno alla volta, a partire dalla posizione corrente e li memorizza nell array di caratteri passato in ingresso. Il metodo restituisce, inoltre, il numero di caratteri letti. close() chiude il descrittore del file. Così come abbiamo fatto per la scrittura, anche per la lettura possiamo ottenere vantaggi in termini di prestazioni, utilizzando la classe BufferedReader. Il costruttore della classe BufferedReader riceve in ingresso un istanza della classe FileReader. Il metodo da utilizzare per leggere è sempre read().

Listato 5. Lettura di un file di testo con BufferRead public static void readfile2() char[] in = new char[50]; int size = 0; try FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); size = br.read(in); System.out.print( Caratteri presenti: + size + \n ); System.out.print( Il contenuto del file è il seguente:\n ); for(int i=0; i<size; i++) System.out.print(in[i]); br.close(); catch(ioexception e)

Listato 6. Altro esempio per la lettura del contenuto in un file import java.io.*; import java.net.*; // definiamo la classe principale public class InfoFile public static void main(string[] args) // definiamo il percorso al file da leggere File doc=new File("C:/doc.txt"); URL path=null; // creaiamo un blocco try-catch per intercettare le eccezioni try // mostriamo il percorso al file path=doc.tourl(); System.out.println("Il doc si trova nel percorso" + path); / /mostriamo il nome del file doc=new File(path.getFile()); System.out.println("Nome del file " + doc); int i; // apriamo lo stream di input... InputStream is=path.openstream(); BufferedReader br=new BufferedReader(new InputStreamReader(is)); //...e avviamo la lettura del file con un ciclo do i=br.read(); System.out.println((char)i); while (i!=-1); is.close(); // intercettiamo eventuali eccezioni catch (MalformedURLException e) System.out.println("Attenzione:" + e); catch (IOException e) System.out.println(e.getMessage()); N.B. grazie alla classe File() un file partecipa al flusso di dati in un'applicazione esattamente come qualsiasi altra informazione o dato.

All indirizzo: http://docs.oracle.com/javase/7/docs/api/java/io/file.html Si può trovare la documentazione ufficiale (in lingua inglese) dell Oracle sulla classe File del linguaggio Java. All indirizzo: http://tutorials.jenkov.com/java-io/file.html È presente un tutorial sulla gestione dell input/output da file.