Filhantering. Grunderna i filhantering. Uppbyggnad av filer. Data hierarkin. Filpekaren. Positionering i filer 2002-10-29



Relevanta dokument
Programmering i C++ EDA623 Strömmar och filer. EDA623 (Föreläsning 9) HT / 19

Programmeringsteknik med C och Matlab

TDIU01 - Programmering i C++, grundkurs

6 In- och utmatning, strömmar

TDDC76 - Programmering och Datastrukturer

Pekare. Pekare. Varför använder vi pekare? Vad är en pekare? Pekare. Deklaration/initiering av pekare

Föreläsning 4: Filer och strömmar

TDIU01 - Programmering i C++, grundkurs

TDDC76 - Programmering och Datastrukturer

TDP004. Minne och pekare. Eric Elfving Institutionen för datavetenskap

Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser

Kapitel 5. Strömmar. Utmatning

TDIU01 - Programmering i C++, grundkurs

Läsning, skrivning, tangentbord, skärm. F6: Filhantering (kap. 8) Tabell på skärmen. save

Enkla datatyper minne

En ström är en klass som representerar en bytesekvens med data. I C++ finns flera typer av strömmar, men de går alla al använda på samma säl.

Enklast att skriva variabelnamn utan ; innehåll och variabelnamn skrivs ut

PC-teknik, 5 p LABORATION FILHANTERING

Tommy Färnqvist, IDA, Linköpings universitet

C++ Lektion Filhantering

Innehåll. 1 Algoritmer. 2 Strömmar och filer. 3 Iteratorer. 1 Söka, räkna. 2 Jämföra, genomlöpa. 3 Generera nya data. 4 Kopiera och flytta element

Numeriska Metoder och Grundläggande Programmering för P1, VT2014

*Pekarvärden *Pekarvariabler & *

Strängar. Strängar (forts.)

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Övning från förra gången: readword

Filer och structer Del 2

5 Grundläggande in- och utmatning

Databaser Design och programmering. Fysisk design av databasen att ta hänsyn till implementationsaspekter: minnesteknik filstrukturer indexering

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

Att använda pekare i. C-kod

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Planering Programmering grundkurs HI1024 HT TIDAA

Planering Programmering grundkurs HI1024 HT data

Föreläsning 18 Filer och avbildningar

Deklarera en struct som kan användas för att representera en rät linje

729G04 Programmering och diskret matematik. Föreläsning 7

Minnestilldelning (allokering) och frigörande (avallokering) av minne

+Överskådlighet Normalt sätt blir ett program skrivet i det procedurella paradigmet överskådligt. Modifikationer på delproblem kan ske med lätthet.

Databaser Design och programmering. Fysisk design av databasen att ta hänsyn till implementationsaspekter: minnesteknik filstrukturer indexering

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Databaser - Design och programmering. Minnesteknik. Minnesteknik, forts. Hårddisk. Primärminne (kretsteknik) Fysisk design av databasen

Skizz till en enkel databas

F7 - Arrayer. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 5: Introduktion av pekare

[] Arrayer = Indexerad variabel

TDIU01 (725G67) - Programmering i C++, grundkurs

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

Strömmar och strängar

Databaser Design och programmering Minnesteknik Minnesteknik, forts Utvecklingen Hårddisk Hårddisk, forts

Objektorienterad Programmering (TDDC77)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Objektorienterad Programmering (TDDC77)

TDDC77 Objektorienterad Programmering

Omgivningar. Omgivningar är viktiga eftersom de avgör vilka namn som är synliga och därmed dessas innebörd och de värden som är förknippade med dem.

Datorlära 3 Octave Workspace ovh mijlö Skriva text på skärmen Värdesiffror Variabler och typer Strängar Makro Vektorer

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Standardfilerna Input och Output

Standardfilerna Input och Output. Filer... Filer... vanlig utbyggnad för ökad dynamik. Filer... filtyper

Grunderna i stegkodsprogrammering

Planering av ett större program, del 2 - for och listor. Linda Mannila

Sammansatta datatyper Generics: Parametrisk polymorfism

Del6 Strömmar Ämnesområden denna föreläsning:

Starta och stänga av datorn. Att starta är i allmänhet problemfritt, men man bör vänta med aktiviteter (starta program) tills startfilerna är

Mer datorarkitektur. En titt I datorn Minnen

OOP Objekt-orienterad programmering

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Generell säkerhet. Loggning - Hur mycket ska man logga? Inloggningsrutinerna i Unix. Loggning fortsättning

Paneler - VCPXX.2. Programmeringsmanual för VCP-paneler. Revision 2

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Språket Python - Del 2 Grundkurs i programmering med Python

EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Administration. EDAf30: Programmering i C++, 7.5 hp Obligatoriska moment

Programmering B med Visual C

Föreläsning 13. In- och utmatning

C++ Lektion Tecken och teckenfält

Visual Basic, en snabbgenomgång

[][] Arrayer med två index

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Digital- och datorteknik

Omtenta, Programmeringsteknisk översiktskurs, VT06

Objektorientering: Lagring, räckvidd och livstid

HI1024 Programmering, grundkurs TEN

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Digital- och datorteknik

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Fö 2: Minnen. Introduktion. Primärminnet. Interna och externa minnen. Introduktion, Klassificiering

Parameteröverföring. Exempel. Exempel. Metodkropp

Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning

Introduktion till programmering och Python Grundkurs i programmering med Python

Länkning av Prolog under C

Karlstads Universitet, Datavetenskap 1

Styrsystem. Quantum, M340 o Momentum. Kom-igång med konvertera Concept till Unity Rev

Operativsystem - Filsystem

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

TDDE44 Programmering, grundkurs

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Transkript:

Grunderna i filhantering Filhantering Filer kan användas för permanent lagring av data Hårddisk, disketter, CD-R/W, band Variabler och arrayer Försvinner när du avslutar programmet Sparas i datorns arbetsminne (internminne) DAVA07/08 JE,MG,MG,PS 2 DAVA07/08 JE,MG,MG,PS Uppbyggnad av filer Data hierarkin 3 DAVA07/08 JE,MG,MG,PS 4 DAVA07/08 JE,MG,MG,PS Positionering i filer I en fil börjar man alltid att räkna från 0 Aktuell position hålls ordning på mha en filpekare Filpekaren Filpekaren är ett antal bytes sett från början av filen (offset)! Värdet ändras automatiskt när man läser eller skriver i filen Men först måste man... 5 DAVA07/08 JE,MG,MG,PS 6 DAVA07/08 JE,MG,MG,PS, 1

Öppna en fil (1) Koppla samman filvariabeln (internt i minnet) med den fysiska filen Öppnar en kommunikationskanal för läsning, skrivning eller båda Öppna en fil (2) Varje fil som är öppen har en filpekare När en fil öppnas sätts filpekaren (om inget annat nämns) automatiskt till att peka först i filen 7 DAVA07/08 JE,MG,MG,PS 8 DAVA07/08 JE,MG,MG,PS Skapa eller tömma filen Filpekaren hamnar först i filen Start = EOF Skrivning till filen Värdet skrivs till filpekarens aktuella position Filpekaren flyttar sig efter skrivningen 9 DAVA07/08 JE,MG,MG,PS 10 DAVA07/08 JE,MG,MG,PS Flytta på filpekaren Ex. Flytta filpekaren till första positionen i filen (återställer filpekaren) Läsning från filen Filpekaren läser värdet från sin aktuella position och flyttar sedan fram ett steg 11 DAVA07/08 JE,MG,MG,PS 12 DAVA07/08 JE,MG,MG,PS, 2

Jämförelse filer och arrayer Både arrayer och filer börjar från 0 Arrayer kan vi direkt tilldela/avläsa ett element via ett index, i en fil måste man flytta filpekaren Arrayer har en fast angiven storlek, en fil har ingen största storlek förutom den som sätts av minnet Båda kan lagra godtyckliga datatyper Filhantering i C++ Hur fungerar det i C++? Ingen struktur: bara en sekvens av bytes som slutar med en EOF-flagga.Programmeraren måste strukturera upp filen så att den matchar När en fil öppnas skapas en variabel och en kommunikationskanal associeras med variabeln. 13 DAVA07/08 JE,MG,MG,PS 14 DAVA07/08 JE,MG,MG,PS Pseudo-kod för filhantering Pseudo-kod för filhantering Skapa filvariabel Öppna filen Koppla ihop filvariabeln med den fysiska filen för att få en kommunikationskanal Ange om filen skall vara läsbar/skrivbar eller båda Kontrollera om filen gick att öppna Läs/skriv till filen Stäng filen Bibliotek Vilka bibliotek behövs? Header-biblioteken <iostream> och <fstream> 15 DAVA07/08 JE,MG,MG,PS 16 DAVA07/08 JE,MG,MG,PS Biblioteket Fstream Biblioteket <fstream> innehåller deklarationer för att kunna skapa variabler av Öppna en fil för enbart läsning ifstream: för läsning från en fil ofstream: för skrivning till en fil fstream: för läsning och skrivning till en fil 17 DAVA07/08 JE,MG,MG,PS 18 DAVA07/08 JE,MG,MG,PS, 3

Öppna en fil för enbart skrivning ios::app Alternativ vid skrivning ios::ate ios::out ios::trunc 19 DAVA07/08 JE,MG,MG,PS 20 DAVA07/08 JE,MG,MG,PS Öppna för läsning och skrivning Representation av data i C++ Sparas antingen binärt ios::binary anges vid öppning för läsning/skrivning eller via ASCII-kodning 21 DAVA07/08 JE,MG,MG,PS 22 DAVA07/08 JE,MG,MG,PS Kontrollera om filen öppnades Det kan hända att öppningen av en fil misslyckas, därför bör man alltid testa! Skrivning med << operatorn (1) Som i cout fast till filvariabeln istället 23 DAVA07/08 JE,MG,MG,PS 24 DAVA07/08 JE,MG,MG,PS, 4

Skrivning med << operatorn (2) Skrivning med << operatorn (3) 25 DAVA07/08 JE,MG,MG,PS 26 DAVA07/08 JE,MG,MG,PS Skrivning med write (1) Skriver alltid ned en fast storlek (oavsett om hela utrymmet är utnyttjat eller inte) Skrivning med write (2) 27 DAVA07/08 JE,MG,MG,PS 28 DAVA07/08 JE,MG,MG,PS Läsning från filer Kompletterande mot skrivningen >> read(reinterpret_cast<char *> (&p), sizeof(person)) Sekvensiella filer vs. direktfiler Två typer av filer Sekventiella filer Lagras ofta efter en ordning angiven av ett nyckelvärde Använder oftast << och >> för att skriva och läsa Direktfiler Alla strukturer måste ha samma längd! read och write används 0 2 0 0 3 0 0 4 0 0 5 0 0 byte offsets b y tes 29 DAVA07/08 JE,MG,MG,PS 30 DAVA07/08 JE,MG,MG,PS, 5

Positionera filpekaren (1) Positionera för läsning / flytta läspekaren seekg(long int) ios::beg, ios::cur, ios::end //Flytta 7 bytes framåt från filens början infile.seekg(7); //infile.seekg(7, ios::beg); //Flytta fram 3 bytes från aktuell filposition infile.seekg(3, ios::cur); //Flytta filpekaren 2 steg från filens slut infile.seekg(2, ios::end); Positionera filpekaren (2) Positionera för skrivning / flytta skrivpekaren seekp(long int) Samma som för seekg fast för skrivning Hämta aktuell filposition för läspekaren tellg() Hämta aktuell filposition för skrivpekaren tellp() Tjuvkika på nästa tecken utan att flytta filpekaren peek() Kolla om filpekaren står på EOF-flaggan eof() 31 DAVA07/08 JE,MG,MG,PS 32 DAVA07/08 JE,MG,MG,PS Stängning av filen Till sist: Det är god ton (och ökar prestandan) att explicit stänga filen så fort du är färdig med den close() Vidare information om filhantering För större exempel och mer detaljer, se kapitel 14 i Deitel & Deitel 33 DAVA07/08 JE,MG,MG,PS 34 DAVA07/08 JE,MG,MG,PS, 6