14
1 Rifare il programma dell’ordinamento dei numeri ma con interfaccia windows: Textbox in cui scrivere un numero Button per trasferirlo in una listbox Button per avere l’ordinamento visualizzato in un’altra listbox

Lezione aspnet

Embed Size (px)

DESCRIPTION

Lezione aspnet

Citation preview

Page 1: Lezione aspnet

1

Rifare il programma dell’ordinamento dei numeri ma con interfaccia windows:

Textbox in cui scrivere un numeroButton per trasferirlo in una listboxButton per avere l’ordinamento visualizzato in un’altra listbox

Page 2: Lezione aspnet

2

C# - Leggere e scrivere File

Simona Colombo04 giugno 2012

Page 3: Lezione aspnet

3

Leggere e scrivere file sono due operazioni tipiche in applicazioni che operano nel mondo reale e quindi sapere come gestire flussi di dati

(stream) è un aspetto fondamentale per ogni programmatore.

Gli stream sono lo strumento migliore per gestire sia l’accesso sequenziale che l’accesso casuale ai dati all’interno del .NET

Framework e derivano da una classe base astratta che fornisce l’interfaccia e l’implementazione base per tutti i tipi di stream del

Framework.

Sono diverse le classi che prendono parte al processo di lettura e scrittura di file. Fondamentale in tale contesto è la classe File, che espone diversi metodi statici per l’apertura e la creazione di

file, permettendo diversi tipi di operazioni:Lettura e scrittura dei contenuti di fileOperazioni di gestione di file in lettura

Operazioni di gestione di file in scritturaSemplici operazioni su file (tipo controllo di esistenza o

cancellazione)

Page 4: Lezione aspnet

4

Quando un file viene aperto o creato la classe File può restituire diversi tipi di oggetti. Il più semplice di essi è l’oggetto FileStream, che rappresenta un

file nel file system. Altri oggetti che è possibile ottenere dalla classe File sono StreamReader e StreamWriter, che consentono la lettura e la

scrittura sequenziale in uno stream.

Open – Apre un file esistente e ritorna un oggetto FileStreamOpenRead - Apre un file esistente e ritorna un oggetto FileStream in sola letturaOpenText - Apre un file esistente e ritorna un oggetto StreamReaderOpenWrite - Apre un file esistente per la scrittura e ritorna un oggetto StreamWriterReadAllBytes – Apre un file, legge il contenuto ponendolo in un array di byte e chiude il fileReadAllLines - Apre un file, legge il contenuto ponendolo in un array di stringhe (una per riga di dati) e chiude il fileReadAllText - Apre un file, legge il contenuto ponendolo in una stringa e chiude il fileWriteAllBytes – Apre un file, scrive in esso i dati contenuti in un array di byte (sovrascrivendo eventuali dati esistenti) e chiude il fileWriteAllLines - Apre un file, scrive in esso i dati contenuti in un array di stringhe (sovrascrivendo eventuali dati esistenti) e chiude il fileWriteAllText - Apre un file, scrive in esso i dati contenuti in una stringa (sovrascrivendo eventuali dati esistenti) e chiude il file

Page 5: Lezione aspnet

5

Classe FileStream

La classe FileStream fornisce le funzionalità di base per la gestione in lettura e scrittura di stream contenuti in file; la classe in oggetto dispone delle seguenti proprietà e metodi:

ProprietàCanRead – Determina se lo stream supporta le operazioni di letturaCanTimeout – Determina se lo stream può generare o meno eventi di timeoutCanWrite – Determina se lo stream supporta le operazioni di scritturaLenght – Restituisce la lunghezza in byte dello streamName – Restituisce il nome del filePosition – Restituisce o permette di impostare la posizione di un cursore virtuale all’interno dello streamReadTimeout – Permette di impostare il valore di timeout per le operazioni di letturaWriteTimeout – Permette di impostare il valore di timeout per le operazioni di scrittura

MetodiClose – Chiude lo stream e rilascia tutte le risorse ad esso associateFlush – Svuota i buffer all’interno dello stream e forza la scrittura delle modificheLock – Blocca l’azione di altri processi che tentano di modificare il fileRead – Esegue una lettura sequenziale di uno specifico numero di byteReadByte – Esegue la lettura di un singolo byteSeek – Imposta la posizione all’interno del fileWrite – Scrive le informazioni sullo stream

Page 6: Lezione aspnet

6

Classe StreamReader

La classe StreamReader fornisce le funzionalità di base per leggere dati dalla classe derivata Stream e, oltre ai metodi di citati

per le classi precedenti, espone alcune utili proprietà:

BaseStream – Restituisce lo stream attualmente in lettura

CurrentEncoding – Restituisce la codifica utilizzata

EndOfStream – Determina il lettore è giunto alla fine dello stream

Page 7: Lezione aspnet

7

Andiamo allora a vedere come aprire innanzitutto un file: i metodi sono più che altro 2, in base a come abbiamo precedentemente

organizzato il codice.

utilizzare la classe statica File

FileStream stream = File.Open(@"C:testtext.txt", FileMode.Open);StreamReader reader = new StreamReader(stream);Console.WriteLine(reader.ReadToEnd());reader.Close();

Page 8: Lezione aspnet

8

• La classe statica File permette le operazioni sui file

• Verificare che un file esiste:

File.Exists(FILE_NAME);

• FileStream permette di accedere o creare un file:

FileStream fs = new FileStream("test.txt", FileMode.Open, FileAccess.ReadWrite);

• Sempre chiudere il file al termine delle operazioni o le modifiche potrebbero andare perse:

fs.Close();

Operazioni su file

Page 9: Lezione aspnet

9

Scrivere e leggere su fileStreamWriter sr = new StreamWriter(fs);

sr.Write(text);

sr.Close();

StreamReader sr = new StreamReader("test.txt");

string res = sr.ReadLine();

sr.Close();

Prende come parametro uno Stream o il nome del file

Esistono varie modalità di scrittura

Analogo al Writer

Page 10: Lezione aspnet

10

Scrivere e leggere su file

• Attenzione a gestire le numerose eccezioni che possono essere sollevate

• Si può eseguire operazioni anche in file binario (BinaryWriter e BinaryReader)

• Esistono molte variazioni sul tema

Page 11: Lezione aspnet

11

La classe File supporta anche la lettura di un intero file con una singola chiamata

Console.WriteLine(File.ReadAllText(@"C:\Prova.txt"));

Il seguente esempio mostra come ricercare all’interno di un file una stringa particolare ('Vincenzo'), terminando la lettura in caso di sua individuazione

StreamReader rdr = File.OpenText(@"C:\Prova.txt");

while(!rdr.EndOfStream) { string line = rdr.ReadLine();

if (line.Contains("Vincenzo")) { Console.WriteLine("Trovato il file:"); Console.WriteLine(line); break; } } rdr.Close();

Page 12: Lezione aspnet

12

Adesso vediamo come fare per scrivere dati su un file. Per effettuare questa operazione occorre utilizzare la classe File per creare uno stream specificando il percorso del file come mostrato nel seguente esempio

FileStream testFile = File.Create(@"c:\Prova.txt");

Il metodo File.Create crea un nuovo file legato ad un oggetto FileStream da utilizzare per effettuare la scrittura di dati in esso. Per effettuare tale operazione è opportuno utilizzare la classe

StreamWriterStreamWriter writer = new StreamWriter(testFile); writer.WriteLine("Ciao"); writer.Close(); testFile.Close();

Page 13: Lezione aspnet

13

Gli esempi mostrati determinano la creazione di un nuovo file ma è possibile ovviamente effettuare operazioni di scrittura su file esistenti tramite il metodo File.Open

FileStream testFile = File.Open(@"c:\Prova.txt",FileMode.Open, FileAccess.Write);

o utilizzando il metodo File.OpenWrite

FileStream testFile = File.Open(@"c:\Prova.txt");

Chiaramente gli ultimi due metodi funzionano solo se il file specificato esiste, quindi è opportuno nel vostro codice eventualmente accertarsi della sua esistenza.

Page 14: Lezione aspnet

14

Esercizio:

Creazione dell'interfaccia per giocare a tris a due giocatori, con salvataggio risultati su un

File e pubblicazione a video dei punteggi.

Provare a fare un giocatore contro il computer...