10. november 2002 - 12:19
Der er
2 løsninger
Find værdier i en fil
Jeg har nogle filer hvor indholdet kunne se således ud:
By Hillerød
Postnr 3400
Ejendomsnr 00340-0
Kommunenr 419
..hvor "By" og "Hillerød" er separeret med en tabulator.
I filen er der dog omkring 100-300 andre værdier/linier som jeg ikke skal bruge til noget.
Det jeg ønsker er at trække en række værdier ud (ca. 15) som er placeret i en ikke nødvendigvis ens rækkefølge eller placering i filen.
Det mest ligetil ville være at lave et loop og så løbe alle linier igennem, men findes der ikke en funktion som kan søge efter de rigtige linier?
Programmet skal bruges på omkring 3000 filer så jeg leder efter en løsning som udføres forholdsvist hurtigt.
10. november 2002 - 13:56
#1
Jeg mener ikke der findes noget automatisk til at gennemsøge filer. Du bliver nok nødt til at gennemsøge filen linie for linie og spørge til om der findes et bestemt ord i linie al a (seudokode):
linie = første linie;
while(linie != null) {
if (linie indeholder "ord")
else if (linie indeholder "ord2
// osv.
linie = næste linie;
}
Du kan muligvis også anvende en switch. Ved godt det er lidt træls at lave, men det er ikke så svært... :)
10. november 2002 - 16:06
#2
Der er ingen vej udenom at læse hele filen igennem,
fra ende til anden. Det du skal gøre er at huske
at benytte en f.eks. BufferedReader for at gøre
læsningen mere effektiv, ikke mindst når du skal
læse så mange filer som du skal.
Reader reader = new BufferedReader(new FileReader("filnavn"));
String line = null;
while ((line=reader.readLine())!=null) {
if (etellerandetertilstede) {
//...
}
}
Hvis du skal læse den samme fil flere gange,
så skal du overveje at
bruge den nye io pakke, java.nio, hvor du kan
lave en såkaldt memory-mapped fil, hvor hele
filen kommer ind i hukommelsen, så kan du let
læse forlæns, baglæns og sidelæns meget effektivt.