I FILE di dati in C#.

Slides:



Advertisements
Presentazioni simili
Emanuele Silvestri Enrico Frongia 1°E a.s 2011/2012.
Advertisements

Emanuele Silvestri Enrico Frongia 1°E a.s 2011/2012.
Componenti hardware PC: I componenti si possono dividere in quattro gruppi: 1. DISPOSITIVI DI INPUT/ OUTPUT (I/O); 2. MEMORIA ELETTROMAGNETICA NON VOLATILE.
Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”
LA MEMORIA CENTRALE. La memoria nella struttura generale del calcolatore MEMORIA CONTROLLO INGRESSO E USCITA ARITMETICA E LOGICA CPU Dispositivi esterni.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Parte 2 Programmare in Matlab – I Sommario: Introduzione: m-file Strutture condizionali e cicli –Istruzione “if” + Operatori logici in MatlabIstruzione.
Huffman Canonico: approfondimento. Come abbiamo visto, Huffman canonico ci permette di ottenere una decompressione più veloce e con un uso più efficiente.
1 ELEMENTI DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
Basi di dati - Fondamenti
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
IL SOFTWARE (FPwin 6.0).
© 2007 SEI-Società Editrice Internazionale, Apogeo
Tipologia B: IL SAGGIO BREVE
Sistemi operativi.
11. Lettura e Scrittura di file in Matlab
Accedere su Google e aprire l’App Drive cliccando sul pulsante :::
Definizione di lavoro Energia potenziale Potenza
Cosa succede quando premi invio
Applicazione web basata su web service e web socket
Dati in rete Appunti.
PROGRAMMAZIONE SHELL -
LE ARCHITETTURE NON VON NEUMANN
Tutorato Elementi di Informatica 2013
Script Marco D. Santambrogio –
Il Binding Nicolò Sordoni.
File heap.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
SISTEMA OPERATIVO - INTERPRETE DEI COMANDI -
Le postcondizioni specificano l’output della funzione.
Organizzazione fisica
I FILES AD ACCESSO SEQUENZIALE
verifica di abilitazione all’attività di responsabile tecnico
I programmi sono testi? Copyright Stefano Penge 2010 CC BY-NC-SA
I BUS È un insieme di fili conduttori che permette il passaggio di dati tra le varie periferiche del pc.
PROGRAMMAZIONE BASH – ISTRUZIONE IF
Regolamento di fatture in partita doppia
Recupero polizze assicurative
Ardis e il sistema qualità
istalliamo l’ambiente di sviluppo - ide
Classe III A A.s – 2012 Programma di Informatica
Predisposizione e presentazione della domanda di nullaosta
Basi di dati - Fondamenti
Strutture di Controllo
Oggetti Java.
Introduzione agli Algoritmi e alle Strutture Dati
APPUNTI SUL LINGUAGGIO C Memoria secondaria: File
File System ed Input/Output
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Laboratorio II, modulo “Skype”.
WORD 28/02/2019 Informatica - WORD.
LE PARTI INTERNE DEL COMPUTER
APPUNTI SUL LINGUAGGIO C Esercizi su File e Alberi Binari
Le stringhe in C++ Laboratorio 26 Aprile Dott. Serena Villata
Predisposizione e presentazione della domanda di nullaosta
Gli archivi e le basi di dati
APPUNTI SUL LINGUAGGIO C Allocazione dinamica della memoria
Parti interne del computer
Processi decisionali e funzioni di controllo
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
monodimensionali: Vettori bidimensionali: Matrici
Unità 1 Programmi base.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Lezione Terza Primi passi di programmazione
Array e Stringhe Linguaggio C.
Transcript della presentazione:

I FILE di dati in C#

flusso di dati di un file FileStream flusso di dati di un file tra Memoria di Massa e la RAM Viene aperto un canale di comunicazione tra MM e RAM. Viene definito un nome fittizio che avrà il collegamento (lo streaming) e viene indicato il file con relativo percorso. RAM Random Access Memory Memoria di massa (qui hard disk) Lo streaming si apre, si attiva così: FileStream nomefs = new FileStream(@“nomefile.dat", FileMode.modalità);

FileMode determina la tipologia di contatto (la direzione) e come verrà gestito il file FileMode.Open FileMode.CreateNew RAM Random Access Memory Memoria di massa (qui hard disk) FileMode.Append

Il collegamento è pronto ma … è necessario destinare un buffer di memoria al trasferimento dei dati. Si tratta del BinaryReader o del BinaryWriter. Ognuno di essi può compiere solo una delle due azioni: read oppure write. Inoltre, può esistere solo se lo streaming è aperto in modo coerente. Il punto nel file in cui agiranno (in lettura o in scrittura) i nostri oggetti Binary sarà determinato dal FileMode (all’inizio, alla fine ..).

La sintassi è BinaryReader nomeBR = new BinaryReader( nome del FileStream); oppure BinaryWriter nomeBR = new BinaryWriter ( nome del FileStream); Se dobbiamo svolgere operazioni diverse e quindi occorrono più oggetti Binary, ricordiamoci di dare nomi coerenti. Capiamo meglio…..

BR FileMode.Open FSLettura BW1 FileMode. CreateNew FSScrittura RAM Random Access Memory BW2 Memoria di massa (qui hard disk) FileMode. Append FSAggiunta (nel flusso il nome del FileStream e sull’omino il nome dell’oggetto Binary)

BR.ReadString (); Cosa può fare??? LEGGERE cioè trasferire un dato dalla MM alla RAM BR.ReadString (); BR FileMode.Open R A M M M FSLettura Come lo utilizzo? Eseguendo un assegnamento Num= BR.ReadDecimal(); TxtCarattere= BR.ReadChar(); Amico.Nome= BR.ReadString(); (anche in Grid) Testando direttamente il dato If (BR.ReadBoolean()) …. If (BR.ReadString=“Milano”) …. Eseguendo un output Console.WriteLine(BR.ReadString()); Console.WriteLine(BR.ReadDecimal()); Console.WriteLine(BR.ReadBoolean()); Console.WriteLine(BR.ReadByte()); Console.WriteLine(BR.ReadInt32()); Console.WriteLine(BR.ReadChar());

BR.ReadString (); Cosa può fare??? SCRIVERE cioè trasferire un dato dalla RAM alla MM BR.ReadString (); BW1 FileMode. CreateNew o Append R A M M M FSScrittura o FSAggiunta Come lo utilizzo? Tipicamente da Text (anche da Grid) BW1.Write(TxtCogno.Text); BW1.Write(Amico.Nome); BW1.Write(Num); … … Non dimenticare: BWNome.Close(); FsNome.Close();

Alcune precisazioni…. Il FilStream può essere dichiarato in vari punti del programma: in un singolo metodo (se serve solo lì) oppure a livello di public partial class . Non può essere allocato 2 volte. Nemmeno si possono creare 2 FileStream in contemporanea sullo stesso file: questo significa che non possiamo dichiarne 2 al livello di public partial class, ma possiamo invece crearle in procedure diverse. La dichiarazione di un BinaryReader/Writer può avvenire solo dopo che la connessioni di streaming è avvenuta. Tale dichiarazione segue le normali regole di visibilità (esiste o non esiste a seconda di dove viene dichiarata). Conflitti (e quindi errori) possono sorgere se le regole di visibilità non vengono rispettate. Ricordarsi che: se il file è già esistente NON può essere ricreato se non esiste non può essere aperto né in modalità Open, ne in modalità Append.

Prima di procedere chiariamo che ogni operazione su FILE implica uno spostamento di un PUNTATORE all’interno del file stesso. FileMode.Open ………. puntatore all’inizio del file Br.Readstring() comporta un avanzamento e poi il trasferimento dati in RAM FileMode.Open Br.Readstring() Br.Readstring() ….. … Br.Readstring() datoA datoB datoF datoK datoL datoS datoA datoB datoF datoK datoL datoS datoA datoB datoF datoK datoL datoS datoA datoB datoF datoK datoL datoS RAM RAM RAM RAM datoB datoS datoA br.PeekChar() = -1

Prima di procedere chiariamo che ogni operazione su FILE implica uno spostamento di un PUNTATORE all’interno del file stesso. FileMode.Append -> puntatore dopo l’ultimo record Bw.Write(…) comporta prima un avanzamento e poi la registrazione del dato su file. FileMode.Append Bw.Write() FileMode.Createnew FileMode.Create Bw.Write() datoA datoB datoF datoK datoL datoS datoA datoB datoF datoK datoL datoS datoX datoE RAM RAM RAM RAM datoX datoX datoE datoE

br.PeekChar() Verifica SENZA spostare il puntatore nel file, cosa c’è oltre il dato scelto. Se non c’è più nulla, quindi il file è finito, restituisce -1 FSNome.Length restituisce la lunghezza in byte dell’intero file. FSNome.Name restituisce il nome, completo di percorso, del file di dati.

Esempio di scrittura **************** (da text) FileStream fsAgg = new FileStream(@“nomefile.dat", FileMode.Append); BinaryWriter BwAgg = new BinaryWriter(fsAgg); BwAgg.Write(TxtCogno.Text); BwAgg.Write(TxtNome.Text); BwAgg.Close(); fsAgg.Close(); ****************

Esempio di lettura (ciclo) **************** (in lista ) FileStream fsL = new FileStream(@“filenome.dat", FileMode.Open); BinaryReader br = new BinaryReader(fsL); // ciclo di scansione o lettura fino a PeekChar= -1 … cioè fino a che è !=-1 LstAmici.Items.Clear(); while (br.PeekChar()!=-1) { LstAmici.Items.Add(br.ReadString()+ " " + br.ReadString() ); // se non leggo 2 volte estrae 1 stringa per volta } br.Close(); fsL.Close(); ****************

Esempio di lettura 1 per volta (testo prima se ce ne sono ancora) **************** (possono esserci strategie diverse, questa è 1 ) FileStream fsL = new FileStream(@“noemfile.dat", FileMode.Open ); BinaryReader br = new BinaryReader(fsL); if (br.PeekChar() != -1) { TxtCogno.Text = br.ReadString(); TxtNome.Text = br.ReadString(); TxtPosiz.Text = Convert.ToString(fsL.Position); } else BtnAvanti.Text = "Finiti!!"; ****************