C# I FILES. Ad esempio, se volessimo memorizzare le seguenti informazioni relative ad una persona: Nome Telefono Indirizzo

Documenti analoghi
Guida allo sviluppo di applicazioni in linguaggio C# 1. ELABORAZIONE FILE DI TESTO : RIPRENDIAMO ALCUNE IDEE... 2

Creazione, eliminazione, lettura e scrittura di file di testo

Corso sul linguaggio Java

Le classi FileInputStream e RandomAccessFile. Semplici Algoritmi di Ordinamento

INPUT OUTPUT

File e Stream. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Programmazione ad Oggetti

Creazione, eliminazione, lettura e scrittura di file di testo

I/O Streams in Java. Lorenzo Gallucci

Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B

Quando usare file di dati

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

Programmazione Orientata agli Oggetti in Linguaggio Java

La paninoteca. Mi resta da scrivere solo costo()

Gestione di file in Java

Lettura e scrittura - Stream

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

LETTURA E SCRITTURA DI FILE

Informatica. Prof. A. Longheu. Input e Output

ESERCIZIO 1 (FILE DI TESTO)

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

A. Ferrari Java: Stream e File

LETTURA DI DATI DA INPUT

Informatica I. Ingegneria Medica. Prof. Diego Salamon

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

Preparazione allo scritto di Programmazione Comunicazione Digitale / Informatica - A.A. 2012/2013

Corso sul linguaggio Java

Gestione di files Motivazioni

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

Il linguaggio Java I file sequenziali

A. Ferrari Stream e File

Ho raggiunto la fine del file Provo a leggere un intero, ma il dato che prelevo dal file non è un intero

Introduzione all uso degli oggetti in Java (parte II) Walter Didimo

Lezione 16 programmazione in Java

Java I/O e serializzazione

File e Stream _Stream_[04] Stampa del: lunedì 9 dicembre Andrea Zoccheddu CORSO INFORMATICA ITI ANGIOY SASSARI

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

LabVIEW parte II. Ing. Gianfranco Miele November 3, 2010

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

Operazioni su file di caratteri

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

Esercitazione 4. Gestione dei file in Unix

Fondamenti di Programmazione

File binari e file di testo

Esercitazioni di Fondamenti di Informatica - Lez. 9 4/12/2018

Classe Vettore (i) Creare una classe che consenta di gestire un vettore di N elementi reali (double), che preveda i seguenti metodi:

Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61

Esercitazioni Fondamenti di Informatica

Preparazione allo Scritto di Programmazione

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

10. File e loro attributi

I files (archivi) Il C definisce in stdio.h tre file aperti automaticamente: stdin, stdout e stderr.! Sono ad accesso sequenziale diretto

Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 9 File

L AMBIENTE CODE BLOCKS E L IO

Java I/O e serializzazione

Unità A1 I file testo

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 6 Marzo 2016

STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe

PROVA SCRITTA 23 MARZO 2010

I files in C. A cura del prof. Ghezzi

System calls. Università degli Studi di Milano Corso di Laurea in Informatica, A.A Homepage del corso

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 15 Maggio 2013

System calls. Università degli Studi di Milano Corso di Laurea in Informatica, A.A Homepage del corso

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Corso di Informatica

Introduzione al C++ (continua)

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA. INFORMATICA B Ingegneria Elettrica. I file in Matlab

I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002

STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009

Esercitazione Fondamenti di informatica 2

Programmazione Orientata agli Oggetti in Linguaggio Java

Esercitazione n 2. Obiettivi

Titolo presentazione INFORMATICA. sottotitolo A.A Milano, XX mese 20XX Laboratorio n 4 Ing. Gian Enrico Conti Dott.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 21 Maggio 2014

Lettura e scrittura - Stream

L AMBIENTE CODE BLOCKS E L IO

Definizione di file. Directory e file File binari e file di testo

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 15 Maggio 2015

File ad accesso diretto funzioni Hash Parte1. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

A. Veneziani - I file di testo in C++

Files in C endofile

Perchè i files? Realizzano la persistenza dei dati. Sono delle strutture di dati sequenziali. dati che sopravvivono all esecuzione del programma

Linguaggio C: i file

L oggetto creato. Creazione di Oggetti. Rectangle: il concetto 10. Costruzione. Lo spazio di memoria del linguaggio Java. Rectangle: l oggetto

Cosa serve per cominciare?

Laboratorio di reti I: Java IO

Il linguaggio assembly

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Gestione dei file in C

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

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

MATLAB: FILES. Informatica B/C - A.A. 2013/2014

I file di dati. Unità didattica D1 1

Fondamenti di Informatica T-1

file fisico file logico

Gestione dei file. Linguaggio ANSI C Input/Output - 13

Transcript:

C# I FILES Durante il normale sviluppo di applicazioni può succedere di dover memorizzare i dati inseriti dall utente nel corso dell esecuzione del programma. C# offre numerose possibilità per memorizzare le informazioni, quelle che vedremo sono: i file testuali dove i contenuti sono interpretabili con la semplice apertura del file con un editor di testo i file binari dove i contenuti non sono consultabili con la semplice apertura del file con un editor di testo Quando si intende memorizzare le informazioni in un file, occorre analizzare la tipologia e il numero di informazioni, per poterle organizzare, in modo da riuscire a leggerle successivamente per poterle reinterpretare. Ad esempio, se volessimo memorizzare le seguenti informazioni relative ad una persona: Nome Telefono Indirizzo Potremmo scrivere ogni informazione su di una singola riga, in modo da facilitare la successiva lettura, ad esempio: Rossi 338-234567 Via della luna, 14 Ma se le informazioni dovessero riguardare più persone, occorrerebbe separare le informazioni di una persona dall altra, e le possibilità potrebbero essere: scrivendole consecutivamente, su righe diverse, tenendo presente che il numero di informazioni relative a ciascuna persona sono sempre lo stesso numero di righe (3 nel nostro caso), esempio: Rossi 338-1234567 Via della luna, 14 Bianchi 338-1234567 Via del sole, 25 scrivendo tutte le informazioni relative ad una persona sulla stessa riga, separandole con un carattere speciale, ad esempio Rossi 338-1234567 Via della luna, 14 Bianchi 338-1234567 Via del sole, 25 In questo caso il recupero delle informazioni dal file comprenderà la separazione delle informazioni, e il problema potrebbe risolversi con l utilizzo del metodo Split del tipo string che separa le stringhe divise dallo stesso carattere e le restituisce sotto forma di in un array di stringhe, esempio: string[] informazioni = rigafile.split( ); Una volta stabilita la metodologia di memorizzazione è possibile utilizzare le classi seguenti per interagire con il file: File per ottenere informazioni su di un file, per crearlo o per aprirlo Directory per ottenere informazioni su di una cartella o per crearla BinaryWriter per scrivere in un file binario BinaryReader per leggere da un file binario StreamWriter per scrivere in un file di testo StreamReader per leggere da un file di testo

Classe System.IO.File E una classe statica che consente di eseguire diverse operazioni sui file. Metodi di uso comune: void Copy (string asorgente, string adestinazione, bool asovrascrivi) Copia il file asorgente in adestinazione, sovrascrivendo se indicato void Delete (string apercorso) Elimina il file specificato bool Exists (string apercorso) Verifica l esistenza del file specificato void Move (string asorgente, string adestinazione) Sposta il file asorgente in adestinazione Metodi per la gestione dei file TESTUALI: StreamWriter CreateText (string apercorso) Crea un file per scrivervi del testo. Restituisce lo stream su cui scrivere. StreamReader OpenText (string apercorso) Apre un file in lettura. Restituisce lo stream da cui leggere void AppendAllText (string apercorso, string acontenuto) Scrive tutto il testo di acontenuto alla fine del file indicato in apercorso StreamWriter AppendText (string apercorso) Apre il file indicato in apercorso predisponendolo per l accodamento del testo alla fine del file. Restituisce lo stream su cui scrivere. string[] ReadAllLines (string apercorso) Legge tutte le righe dal file specificato, restituendole in forma di array di stringhe, una per ogni riga string ReadAllText (string apercorso) Legge tutto il contenuto del file e lo restituisce in forma di stringa void WriteAllLines (string apercorso, string[] alinee) Scrive tutte le righe indicate dall array alinee nel file apercorso void WriteAllText (string apercorso, string acontenuto) Scrive tutto il testo indicato nel file apercorso Metodi per la gestione dei file BINARI: FileStream Create (string apercorso) Crea o sovrascrive il file indicato in apercorso. Restituisce lo stream su cui scrivere. FileStream OpenRead (string apercorso) Apre un file binario in SOLA lettura. Restituisce lo stream da cui leggere FileStream OpenWrite (string apercorso) Apre un file binario in SOLA scrittura. Restituisce lo stream su cui scrivere Classe System.IO.Directory E una classe statica che consente di eseguire diverse operazioni sulle cartelle. DirectoryInfo CreateDirectory (string apercorso) Crea la cartella indicata in apercorso, e tutte le cartelle intermedie. DirectoryInfo è una classe contenente informazioni sulla cartella creata. void Delete (string apercorso, bool aricorsiva) Elimina la cartella indicata, comprese le sottocartelle se aricorsiva è TRUE bool Exists (string apercorso) Verifica l esistenza della cartella specificata void Move (string asorgente, string adestinazione) Sposta la cartella asorgente in adestinazione Sono tutte classi adibite allo scorrimento dei dati contenuti in un file. Ogni volta che si ha conclusa un operazione di lettura/scrittura occorre liberare le risorse utilizzate dall istanza utilizzata, chiamandone il metodo Close().

Classe System.IO.BinaryReader Consente di leggere il contenuto di un file binario. bool ReadBoolean() Legge un valore booleano byte ReadByte() Legge un byte byte[] ReadBytes(int anumero) Legge il numero di bytes indicato char ReadChar () Legge un char char[] ReadChars (int anumero) Legge il numero di caratteri indicato double ReadDouble() Legge un numero double Int16 ReadInt16 () Int32 ReadInt32 () Int64 ReadInt64 () Legge un intero (a 16, 32 o 64 bit. Il tipo int corrisponde ad un Int32) string ReadString () Legge una stringa Classe System.IO.BinaryWriter Consente di scriver in un file binario. void Write(bool avalore) Scrive un valore booleano void Write(byte avalore) Scrive un byte void Write(byte[] avalore) Scrive un array di bytes void Write(char avalore) Scrive un char void Write(char[] avalore) Scrive un array di char void Write(double avalore) Scrive un numero double void Write(int avalore) Scrive un numero a 32 bit void Write(long avalore) Scrive un numero a 64 bit void WriteString (string avalore) Scrive una stringa Classe System.IO.StreamReader Consente di leggere il contenuto di un file testuale string ReadLine () Legge una riga intera dal file string ReadToEnd () Legge tutto il contenuto del file dalla posizione corrente fino alla fine

Classe System.IO.StreamWriter Consente di leggere il contenuto di un file testuale void Write(bool avalore) Scrive un valore booleano void Write(byte avalore) Scrive un byte void Write(byte[]aValore) Scrive un array di bytes void Write(char avalore) Scrive un char void Write(char[]aValore) Scrive un array di char void Write(double avalore) Scrive un numero double void Write(int avalore) Scrive un numero a 32 bit void Write(long avalore) Scrive un numero a 64 bit void WriteString (string avalore) Scrive una stringa void WriteLine (string avalore) Scrive il testo specificato e inizia una nuova riga

Esempio di lettura/scrittura con un file TESTUALE // Creazione del file e scrittura // Creazione file StreamWriter sw = File.CreateText("c:\\test.txt"); // Scrittura righe sw.writeline("prima riga"); sw.writeline("seconda riga"); sw.close(); Console.WriteLine("File creato con successo!"); // Lettura contenuti // Apertura file StreamReader sr = File.OpenText("c:\\test.txt"); // Lettura di tutte le righe presenti string testo = sr.readline(); while(testo!= null) Console.WriteLine(testo); testo = sr.readline(); sr.close(); Console.WriteLine("File letto con successo!"); // Accodamento contenuti // Apertura file StreamWriter sw = File.AppendText("C:\\test.txt"); // Accodamento nuovo testo sw.writeline("questa linea è stata accodata"); sw.close(); Console.WriteLine("Accodamento testo riuscito!");

Esempio di lettura/scrittura con un file BINARIO // Scrittura binaria // Apertura file in scrittura FileStream fs = File.Create("c:\\test.bin"); BinaryWriter bw = new BinaryWriter(fs); // Preparazione dati da scrivere int varintero = 10; double vardouble = 1500.34; string varstring = "Ciao Mondo!"; // Scrittura dati bw.write(10); bw.write(vardouble); bw.write(varstring); bw.close(); fs.close(); Console.WriteLine("Scrittura binaria riuscita!"); // Lettura binaria // Apertura file in lettura FileStream fs = File.OpenRead( C:\\test.bin ); BinaryReader br = new BinaryReader(fs); // Lettura contenuti Console.WriteLine(br.ReadInt32()); Console.WriteLine(br.ReadDouble()); Console.WriteLine(br.ReadString()); br.close(); fs.close(); Console.WriteLine("Lettura binaria riuscita!");