Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Tekst filer Tekstfiler opbygges normalt af linier, hvor disse ikke behøver at være samme længde. Når man skal arbejde med tekstfiler, ønsker man metoder.

Lignende præsentationer


Præsentationer af emnet: "Tekst filer Tekstfiler opbygges normalt af linier, hvor disse ikke behøver at være samme længde. Når man skal arbejde med tekstfiler, ønsker man metoder."— Præsentationens transcript:

1 Tekst filer Tekstfiler opbygges normalt af linier, hvor disse ikke behøver at være samme længde. Når man skal arbejde med tekstfiler, ønsker man metoder der kan læse og skrive tekst, herunder på linieniveau. Dette tilfredsstilles ikke af streams, der arbejde på byte- niveau, men i stedet for at lave klasser, der direkte arbejder på fx. Tekstfiler, har man lavet klasser, der kobles sammen med en stream og så kun skal kunne omsætte tekst til byte’s. Man kan anvende klassen FileInfo til at oprette klasserne til tekstfiler, der så også tager sig af at oprette og sammenkoble et FileStream objekt.

2 Brug af using statement Using kan bruges til at sikre frigivelse af en ressource også ved fejl Man kan med brug af using undgå at lave besværlig kode for at sikre at filer bliver lukket uanset om der skulle opstå fejl eller der ikke gør.

3 Eksempel med og uden brug af using statement eksemplet er her uden try-catch Uden using FileInfo fInfo = new FileInfo(”myfile.txt”); StreamWriter sWriter = fInfo.CreateText(); sWriter.WriteLine(”Eksempel uden using”); sWriter.Close(); Med using FileInfo fInfo = new FileInfo(”myfile.txt”); using (StreamWriter sWriter = fInfo.CreateText()) { sWriter.WriteLine(”Eksempel med using”); }

4 Eksempel på læsning af tekstfil FileInfo fileInfo = new FileInfo(filename); using (StreamReader sReader = fileInfo.OpenText()) { string txtLinie; txtLinie = sReader.ReadLine(); // læs forud while (txtLinie != null) // null ved EOF (end of file) { Console.WriteLine(txtLinie);// behandling af input txtLinie = sReader.ReadLine(); // læs næste }

5 String metoder for behandling af input I forbindelse med indlæsning af data fra tekstfiler er der ofte behov for at få opdelt en linie. string indeholder forskelige metoder, der her kan være nyttige. Det drejer sig specielt om: Split: der kan opdele en string i flere udfra skilletegn Substring: der kan ”klippe” en del ud af en string IndexOf: der kan finde positionen hvor et tegn / en tekst optræder. Length (property): der angiver antal tegn i en string

6 Eksemler på brug af string metoder string txt = ”Tekst:Der er opdelt”; char[] separator = {’;’, ’ ’}; string[] ord = txt.Split(separator); string txtDer = txt.Substring(6,3); // start=0 Int posEr = txt.IndexOf(”er”);

7 Fejlhåndtering Specielt i forbindelse med filer kan der opstå en del forskellige fejl / exceptions som fx læsefejl eller at man ikke har de rigtige rettigheder. Det vil derfor ofte være nødvendigt at bruge try-catch for at fange disse fejl og lave en fornuftig fejlhåndtering.

8 FileStream FileStream danner basis for filer – disse betragtes som en binær strøm af data. Afhængig af typen kan man åbne filerne for -Læsning -Skrivning (herunder også for at tilføje) -Læsning og skrivning Der kan evt. positioneres på en bestemt byte-position, hvorfra læsning og skrivning så foretages. Dette gøres med seek operation. Dette danner basis for mere avancerede filstrukturer. Der findes også streams, der i stedet for at streame til-/fra filer i stedet kan streamer i memory, ligesom streams også bruges i forbindelse med kommunikation.

9 FileStream Filestream bruges som basis for formater i forbindelse med serialisering og som basis for tekstfiler, men man kan godt bruge dem direkte, hvis man selv sørger for at danne data som byte’s. Serialisering behandles ikke i disse slides, men findes beskrevet andetsteds. Filen åbnes i forbindelse med der laves et nyt FilStream objekt. Der kan ved dannelsen angives om filen skal oprettes eller findes…, samt om den skal åbnes for læsning eller skrivning, samt om den skal kunne deles (åbnes samtidig)

10 Eksempel på skrivning til FileStream string filename = "MyBinText.txt”; FileStream fStream = new FileStream(filename, FileMode.Create); string txt = "Tekst der er udskrives"; foreach (char c in txt) { byte b = (byte)c; // omdan til byte fStream.WriteByte(b); } fStream.Close();

11 Eksempel på læsning fra FileStream string filename = "MyBinText.txt”; FileStream fStream = new FileStream(filename, FileMode.Open); int b = fStream.ReadByte(); // læs en byte forud - bemærk værdi er int while (b != -1) // bemærk at man får -1 ved EOF (end of file) { char c = (char)b; // behandling af input Console.Write(c); b = fStream.ReadByte(); // læs næste } fStream.Close();


Download ppt "Tekst filer Tekstfiler opbygges normalt af linier, hvor disse ikke behøver at være samme længde. Når man skal arbejde med tekstfiler, ønsker man metoder."

Lignende præsentationer


Annoncer fra Google