Filer Vejledning løsninger |
Opgaver |
1 | Lav et program, der udskriver sin egen kildetekst på skærmen, ved at indlæser teksten fra den tekstfile, som indeholder kildeteksten. |
2 | Lav et program, der indlæser en tekstfile efter eget valg (helst en med almindelig prosa). Programmet skal udskrive en statistik over forekomster af bogstaverne A til Z, idet der ikke skelnes mellem store og små bogstaver. Statistikken skal indeholde oplysninger om den procentuelle hyppighed af bogstaverne. Statistikken skal udskrives i en tekstfile. |
Man kan evt. anvende denne file: jekyll_hyde.txt[1], med den velkendte historie om "Dr. Jekyll og Mr. Hyde" (1886), af R.L. Stevenson. Stevenson er også kendt for: "Skatteøen" (1883). Statistikken bliver: | |
statistik.txt
Statistik for filen: jekyll_hyde.txt A: 8,03% B: 1,42% C: 2,36% D: 4,92% E: 12,51% F: 2,39% G: 1,79% H: 6,26% I: 6,68% J: 0,16% K: 0,85% L: 4,06% M: 2,64% N: 6,9% O: 7,68% P: 1,57% Q: 0,11% R: 5,64% S: 6,26% T: 9,2% U: 2,89% V: 0,79% W: 2,44% X: 0,12% Y: 2,3% Z: 0,03% |
|
Hyppigheden af bogstavet 'E' springer som sædvanlig i øjnene. | |
3 | Lav et program der indlæser en tekstfile og udskriver den i en anden tekstfile. Programmet skal frasortere alle tegn der ikke er bogstaver (A til Z) eller mellemrum. |
*4 | I de fleste operativsystemer har man mulighed for at angive en sti eller file vha. diverse wildcards. F.eks. er følgende angivelse: |
*.jpg |
|
samtlige filer, der slutter med ".jpg" - f.eks. "background.jpg". | |
'*' er sjældent den eneste sådanne angivelse man kan bruge. F.eks. tillader de fleste også, at man bruger '?' - f.eks.: | |
???.jpg |
|
der er samtlige filer der slutter på ".jpg" og har tre tegn før punktum - f.eks. "pic.jpg". | |
Et tredie tegn, som jeg ikke har set anvendt nogen steder, men som vi vil indføre i denne opgave, er '#', der kan stå for et vilkårligt ciffer - f.eks.: | |
pic###.jpg |
|
der er samtlige filer der starter med "pic", dernæst har tre cifre, og slutter på ".jpg" — f.eks. "pic025.jpg". | |
Masker | Vi vil kalde angivelser der bruger disse wildcards: masker. Ovenfor har vi set tre eksempler på masker. |
I denne opgave skal du lave en implementation af FileFilter, der kan filtrere filer alt efter om de opfylder et kriterie formuleret på følgende form: | |
<maske> | <maske> | ... | <maske> |
|
altså, at filens navn opfylder mindst én af en række masker som filteret er sat til at arbejde med. Antallet af masker kan være fra 0 og opefter. Hvis der er 0 masker vil alle filenavne blive accepteret. | |
Klassen skal hedde: StringFileFilter, og have to konstruktorer: En default-konstruktor, der sætter listen af masker til den tomme liste, og en konstruktor, der tager én maske som parameter og sætter listen til (som udgangspunkt) kun at indeholde denne maske. | |
StringFileFilter skal også have en add-metode, så det er muligt at tilføje vilkårligt mange masker til det samlede kriterie. | |
Bemærk, at denne opgave er meget svær! | |
Fodnoter: | |
1 | Teksten er fra Project Gutenberg. Det bemærkes, at de sædvanlige (og omfattende) referencer som Project Gutenberg anbringer i deres tekstfiler er fjernet, da det ikke er en del af historien. Ophavsretten til denne og andre historier under Project Gutenberg er udløbet (det er forudsætningen for at den indgår i projektet), og hverken Project Gutenberg eller undertegnede har nogen ophavsret til filen. Jeg har selv bidraget med frivillig arbejdskraft til filer, der ligger på Project Gutenberg gennem Distributed Proofreaders. |