Avatar billede duckman Nybegynder
25. marts 2004 - 11:57 Der er 6 kommentarer og
1 løsning

File problem i Netbeans

Hej, jeg har brug for at have en tekst fil liggende i samme mappe som mit program, indeholdende nogle indstillinger til en package.
jeg prøver at sende filen med som et parameter til funktionen i pakken:

File indstillinger = new File("settings.cfg");
Statement st = DBStatement.hentStatement(indstillinger.getAbsolutePath());    //getAbsolutePath() returnerer den absolutte sti til filen.

dette stykke kode virker fint i BlueJ (et meget lille udviklingsprogram specielt henvendt til begyndere), men når jeg prøver med den samme kode i Netbeans, får jeg en fejl med at den ikke kan finde filen 'settings.cfg'.
efter hvad jeg har kunnet læse mig til, skyldes dette at System variablen 'user.dir' i netbeans ikke peger på samme mappe som mit program, men istedet på C:\Programmer\j2sdk_nb\netbeans3.5.1\bin\ (hvor netbeans er installeret).
hvis jeg ligger settings.cfg i denne mappe virker det også fint, men er der nogen der har en ide til hvordan jeg kan have settings.cfg liggende i samme mappe som mit program, og stadig få sendt placeringen korrekt afsted som argument ?

mvh. Anders Jakobsen
Avatar billede arne_v Ekspert
25. marts 2004 - 12:11 #1
Prøv med:

getClass().getClassLoader().getResource("settings.cfg")

som søger i classpath og returnerer en URL.

Så må du enten lade din hentStatement metode læse fra en URL
eller fiske det nødvendige dele ud af URL.
Avatar billede duckman Nybegynder
25. marts 2004 - 13:08 #2
tak for hjælpen, det ser ud til at virke...men er der ikke en nemmere måde at gøre det på ?
det giver en del kode at få lavet url om til en String, da man skal fjerne det file:/ prefix den sætter på...

mvh. Anders Jakobsen
Avatar billede arne_v Ekspert
25. marts 2004 - 13:20 #3
Min hypotese var at du skulel læse den fil som en Properties fil.

Og så kan du:

URL url = getClass().getClassLoader().getResource("settings.cfg");

Properties props = new Properties();
props.load(url.openStream());

d.v.s. undgå at konvertere URL->filnavn String->FileInputStream.

Hvis det ikke er det du skal, så hænger du nok på det andet.
Avatar billede arne_v Ekspert
25. marts 2004 - 13:22 #4
Den store fordel ved getResource URL openStream er at den ikke bare
virker nå dine .class og .properties filer ligger på disk, men også
når de er bundtet i en jar fil !

(hvis de er i en jar fil så virker forsøg på at konstruere fil navn ikke)
Avatar billede arne_v Ekspert
25. marts 2004 - 13:23 #5
OK ?
Avatar billede duckman Nybegynder
25. marts 2004 - 13:37 #6
ja, jeg tænkte jo nok der var en smartere måde, mange tak ;)
har fået kogt det hele ned til en enkelt linie uden for pakken.

mvh. Anders Jakobsen
Avatar billede _carsten Nybegynder
25. marts 2004 - 14:25 #7
Du kan også sætte workingdir i NetBeans

Vælg  Tools | Options | Debugging and Execution | External execution
og sæt Working Directory

Men det ændrer ikke ved, at jeg stadig ville bruge Arne's løsning i denne situation.
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