Title: Filhantering
1Filhantering
- Grundprincipen för filhantering
- Öppna filen
- Gör nåt (läs eller skriv)
- Stäng filenÂ
2Datafiler
- Filer kan innehålla
- Ren text (ex källkodsfiler)
- Formaterad text (ex .doc-filer)
- Binärdata (binär information, .exe-filer)
3C I/O Streams
- C använder strömmar för in- och
utmatningsoperationer
inström
- Inströmmar används för att läsa data
Program
Källa, Ex tangentbord
utström
- Utströmmar används för att skriva data
Program
Destination, ex. fil på hårddisk
4Dataströmmar
Utenhet
101010101
HÃ¥rddisk
101010101
Processor
101010101
In- och utenhet
101010101
Inenhet
5C I/O Streams
- Kommunikationskanalen kan vara en nätverkslänk,
en minnesbuffert, en fil eller en
användarterminal - Det spelar ingen roll varifrån informationen
kommer, eller vilken typ av data som läses eller
skrivs, algoritmerna blir ändå i stort desamma - Därför kan strömmarna användas med likartade
metoder
6System.IO
- Denna namnrymnd innehåller klasser för
dataströmmar till och från filer och vanligen
till vår bildskärm (klassen Console) .
Även dataströmmar kan vi se som filer, dvs
måste öppnas och stängas
7System.IO
- Denna namnrymd innehåller klasser för
dataströmmar till och från filer, strängar och
minne. - Klasserna kan indelas i tre kategorier
- För hantering av filer och kataloger
- Directory- och File klasser
- För läsning/skrivning av bytevärden
- Stream-klasser
- För läsning/skrivning av text
- Reader/Writer-klasser
8Att skriva till en textfil
Öppna
StreamWriter utfil new StreamWriter("Testa.txt"
) utfil.Write("Du kan använda samma metoder
här ") utfil.WriteLine("som mot 'Console.Out',
ex 'WriteLine'!") utfil.Close()
Skriv
Stäng
9Att läsa från en textfil
Öppna
StreamReader infil new StreamReader("Testa.txt"
) while (true) string line
infil.ReadLine() if (line null)
break Console.WriteLine(line) infil.Close()
Läs
Stäng
10End-Of-File (EOF)
- Från en sekventiell fil läses allt i tur och
ordning, exempelvis rad efter rad, eller post
efter post. - När läsningen sker och det inte längre finns
något kvar att läsa in från filen uppstår EOF. - Hur EOF hanteras varierar mycket mellan olika
språk och utvecklingsmiljöer. Ett vanligt sätt är
att en statusflagga blir satt, som vi kan testa
om den är true eller false. - I C ser vi att vi kommit till EOF genom att
resultatet av inläsningen blir null.
11Vad händer om vi fortsätter efter EOF?
- Även detta varierar mycket mellan olika språk och
utvecklingsmiljöer. Några vanliga beteenden - Ett felmeddelande ges (exempelvis att ett
Exception kastas) - Den sista posten bearbetas igen och igen och
igen
12Read-ahead
- I miljöer där en statusflagga används för EOF,
brukar detta kombineras med Read-Ahead, dvs att
det sker en läsning från filen innan loopen
börjar, men som inte flyttar punkten för nästa
inläsning. - Därigenom vet vi om det finns något att läsa in,
och kan använda det i vår loop. - Exempel, om vi använt en sådan filtyp
while ( !infil.EOF ) string line
infil.ReadLine() Console.WriteLine(line)