Avatar billede trp79 Nybegynder
03. juli 2003 - 14:21 Der er 11 kommentarer og
1 løsning

Konfigurations fil?

Jeg har en udskrivnings klasse, hvor brugeren selv kan bestemme hvilke attributter han vil have udskrevet ved at tjekke nogle checkboxes af. Jeg kunne godt tænke mig at lave en "set-as-default-button".

Hvordan laver man sådan en konfigurations fil (eller hvad det nu hedder). Bør man bare lave en textfil og søge den igennem eller?

Håber nogle kan hjælpe mig igang :o)
mvh
Torben
Avatar billede arne_v Ekspert
03. juli 2003 - 14:36 #1
Den simple løsning er en properties fil.

Der skal kodes meget lidt for det.

Den lidt mere avancered eløsning er XML.
Avatar billede arne_v Ekspert
03. juli 2003 - 14:37 #2
Med properties fil så skriver du bare linier:

print.x = yes
print.y = no
print.z = yes
Avatar billede arne_v Ekspert
03. juli 2003 - 14:39 #3
Og loader dem med:

Properties props = new Properties();
props.load(new FileInputStream(filename));
boolean printx = props.getProperty("print.x").equals("yes");
boolean printy = props.getProperty("print.y").equals("yes");
boolean printz = props.getProperty("print.z").equals("yes");
Avatar billede trp79 Nybegynder
03. juli 2003 - 15:20 #4
Det ser jo rigtig lækkert og nemt ud med properties filer Arne. Jeg kigger på det iaften eller i morgen :o)
Du siger "Med properties fil så skriver du bare linier", betyder det at sidste linie SKAL afsluttes med et linie skift?
Avatar billede arne_v Ekspert
03. juli 2003 - 15:25 #5
Ja.

nøgle = værdi <linieskift>
nøgle = værdi <linieskift>
nøgle = værdi <linieskift>

det er syntaxen.

Om der er det kendte problem med at sidste linie ikke læses hvis der mangler
linie terminator ved jeg ikke - der er ihvertfald ingen problemer hvis
du husker det.
Avatar billede trp79 Nybegynder
03. juli 2003 - 15:40 #6
Lige et sidste spørgsmål inden jeg smuter...
Man er nød til at skrive hele filen hver gang? Altså man kan ikke blot ændre en property ad gangen, vel?
Avatar billede arne_v Ekspert
03. juli 2003 - 15:43 #7
Nej det er en sekventiel tekst-fil og derfor skal man omskrive filen
hver gang.

Det skal være en meget stor fil for at det er et problem.

Det samme gælder iøvrigt XML filer.

Hvis du vil kunne opdatere konfigurations elementer enkeltvis skal
du gemme dem i en database.
Avatar billede trp79 Nybegynder
03. juli 2003 - 19:12 #8
Tak for hjælpen :o)
Avatar billede trp79 Nybegynder
04. juli 2003 - 13:52 #9
Arne jeg har lige et afsluttende spørgsmål. Håber det er iorden, selvom jeg egentlig har lukket dette spørgsmål...

Hvis min properties fil ikke eksisterer når jeg forsøger at loade den, så returnes null. Og derefter troede jeg egentlig at man kunne gøre så:

Properties propsFirma = m.getProp("PrintPropsFirma.ini");//Default indstilling indlæses fra propertyfil (for firma-udprintning)
if(propsFirma == null)
{
    propsFirma.setProperty("print.adr1", "yes");
    propsFirma.setProperty("print.adr2", "yes");
    propsFirma.setProperty("print.adr3", "yes");
    propsFirma.setProperty("print.tlf", "yes");
    propsFirma.setProperty("print.fax", "yes");
    propsFirma.setProperty("print.email", "yes");
    propsFirma.setProperty("print.hjemmeside", "yes");
    propsFirma.setProperty("print.oprettet", "yes");
    propsFirma.setProperty("print.noter", "yes");
    propsFirma.setProperty("print.budgetoms", "yes");
}

Men den brokker sig over første linie i if sætningen (propsFirma.setProperty("print.adr1", "yes");) og giver en null pointer exception på denne :o(
Har du nogen ide om hvad der er galt? Er jeg helt dum til at læse api(http://java.sun.com/j2se/1.4.1/docs/api/java/util/Properties.html) eller?
Avatar billede arne_v Ekspert
04. juli 2003 - 14:07 #10
Du kalder getProp, den returnerer null og så forsøger du at kalde setProperty
på det objekt der er null.

Det skal give fejl.
Avatar billede arne_v Ekspert
04. juli 2003 - 14:08 #11
Properties propsFirma = m.getProp("PrintPropsFirma.ini");
if(propsFirma == null)
{
    propsFirma = new Properties();
    propsFirma.setProperty("print.adr1", "yes");
    ...
}
Avatar billede trp79 Nybegynder
04. juli 2003 - 14:10 #12
Ahhh, selvfølgelig :o)
Mange tak for hjælpen, det virker jo fortrinligt nu, mvh
Torben
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