Avatar billede duckman Nybegynder
22. marts 2004 - 17:15 Der er 6 kommentarer og
1 løsning

indlæsning af variable fra tekst fil

hej, jeg sidder og leger lidt med en Database forbindelse, og har derfor brug for at have en tekst fil hvor brugernavn og kodeord står i, f.eks sådan her:

login anders
passwd ostehaps

i selve programmet har jeg to variable, login og passwd som så skal tildeles den værdi som står i tekst filen.
jeg har forsøgt følgende:

HashMap indstillinger = new HashMap();
String nuværendeLinie = "";
       
try
{
  while(nuværendeLinie != null)
{
//først laves en bufferedreader, som benytter en filereader med filen som parameter.
BufferedReader læser = new BufferedReader(new FileReader("indstillinger.cfg"));

nuværendeLinie = læser.readLine();  //den første linie fra filen ligges ind i en tom String
               
//der laves nu en StringTokenizer som deler nuværende linie op
                StringTokenizer tokenizer = new StringTokenizer(nuværendeLinie);
               
//De to første Tokens puttes ind i et hashmap.
indstillinger.put(tokenizer.nextToken(), tokenizer.nextToken());
//hvis den første linie f.eks er 'login anders' har vi nu et hashmap med nøglen login, og værdien anders
//der itereres indtil der ikke er flere linier i filen, og nuværende linie vil derfor være null
//Herfra er det så nemt at tildele variablen 'login' den rigtige værdi
            }
        }
        catch(IOException e)
        {
            System.out.println(e);
        }

mit problem er bare, at læser.readLine() altid læser den første linie ind, istedet for at hoppe videre til den næste, og læse denne ind.

nogen forslag til hvordan mit problem kan løses, eller til hvordan det kan gøres smartere ?

mvh. Anders Jakobsen
Avatar billede arne_v Ekspert
22. marts 2004 - 17:19 #1
Lav filen som:

login=anders
passwd=ostehaps

og læs den som:

Properties props = new Properties();
props.load(new FilInputStream(filename));
Avatar billede arne_v Ekspert
22. marts 2004 - 17:20 #2
Så kan du bruge props.getProperty("login") etc..
Avatar billede arne_v Ekspert
22. marts 2004 - 17:21 #3
Ups

new FileInputStream(filename)

med et e
Avatar billede arne_v Ekspert
22. marts 2004 - 17:22 #4
Iøvrigt er problemet i din kode at du åbner filen indeni while løkken.

Derfor læser du altid første linie.

Hvis du åbner den ovenfor while løkken bør du kunne læse alle linier.

Men som sagt synes jeg at du skal bruge Properties. Det er meget nemmere.
Avatar billede duckman Nybegynder
22. marts 2004 - 18:15 #5
Mange tak for det hurtige svar, det virker jo perfekt :)
en lille ting er, at man godt kan benytte Properties selvom filen bruger syntaksen
login anders
passwd ostehaps
selvom det naturligvis er mere sigende at bruge = som du siger.

mvh. Anders Jakobsen
Avatar billede arne_v Ekspert
22. marts 2004 - 18:31 #6
Se det var jeg ikke engang klar over.

:-)
Avatar billede simonvalter Praktikant
23. marts 2004 - 00:47 #7
både whitespace, colon og equals kan bruges og \ har også en funktion i properties filer
http://www.codenotes.com/articles/articleAction.aspx?articleID=373
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester