Avatar billede kasseper Nybegynder
27. september 2002 - 13:30 Der er 9 kommentarer og
1 løsning

new File - path ???

Hej

Jeg sidder og laver et lille util til et projekt.
I det Tool har jeg en metode der skal åbne en fil i et andet bibliotek.

Jeg har store problemer med at finde filen.

Første problem :

hvis min fil ligger i samme bibliotek var jeg af den overbevisning at man bare kunne skrive :

File f = new File("test.xml")

Men den kster en fileNotFoundException...?

Andet problem.

Hvis min biblioteksstruktur ser sådan her ud :

classes
    beans
    business
        test
            test.xml
    util
            mitUtil.java

hvordan kan jeg så angive en path i mitUtil.java der skal fange filen test.xml uden at benytte den absolutte path, men kun en relativ....?

Det er sikkert basic, men jeg kan ikke huske/få det til at virke/finde det i javadoc.....!

Tak for hjælpen

Kasse
Avatar billede carstenknudsen Nybegynder
27. september 2002 - 13:38 #1
File f = new File("test.xml") er korrekt når programmet ligger
i samme bibliotek som filen, men ikke hvis du eksekverer det
fra en andet bibliotek. Du får fat i filen hvis du starter
programmet i samme bibliotek, selvom klasse filen ligger andetsteds.

"../test/test.xml" under unix og
"..\\test\\test.xml" under windows.
Igen kræver det at du starter programmet fra biblioteket
util, hvis du kører andetsteds fra, skal det være
relativt til dette bibliotek.
Avatar billede kasseper Nybegynder
27. september 2002 - 13:49 #2
Jeg har læst i Javadoc'en, at når jeg laver en new File("test.xml") bliver det eksekveret fra det sted man har sin JVM instl.
Det virker ihvertfald ikke !.
Avatar billede carstenknudsen Nybegynder
27. september 2002 - 13:53 #3
Nej, det er fra der hvor du har startet dit program ikke hvor JVM
er installeret.Tag følgende test program og læg det hvorsomhelst
og compiler det så klassefilen ligger samme sted.
Kør så programmet ved at gå til biblioteket hvor
test.xml ligger. Det bliver noget som:
java -classpath ../../herliggerdet FileTest
public class FileTest {
public static void main(String[] args ) {
File f = new File( "test.xml" );
System.out.println(f.exists());
}
}
Avatar billede kasseper Nybegynder
27. september 2002 - 13:59 #4
false
Avatar billede kasseper Nybegynder
27. september 2002 - 14:01 #5
Men det skal siges at jeg kører det fra et IDE ( netbeans ) så jeg skal ikke kunne sige om -classpath er med ved eksekveringen eller ej.
Men det burde i princippet da også være lige meget, når det hele bliver kompileret og kør i samme bib. som test.xml
Avatar billede carstenknudsen Nybegynder
27. september 2002 - 14:08 #6
Classpath'en har ingen betydning for åbningen af test.xml,
kun for om den kan eksekvere programmet. Tilføj følgende
til test programmet:
System.out.println("user.dir");
så skriver den ud hvor programmet køres, og det er
helt sikkert et andet sted end du forventer, ellers
skulle test.xml kunne findes.
Avatar billede kasseper Nybegynder
27. september 2002 - 14:12 #7
altså System.out.println("user.dir")

giver user.dir

Men System.out.println(user.dir)

kan ikke kompilere...!
Avatar billede kasseper Nybegynder
27. september 2002 - 14:16 #8
OK, hvis jeg laver en helt normal java via kommandolinie, så virker det, så det må jo være mit IDE der sutter...
træls.
Tak for hjælpen.
Avatar billede carstenknudsen Nybegynder
27. september 2002 - 14:26 #9
Oops jeg skrev forkert, prøv det her.
System.out.println(System.getProperty("user.dir"));
Avatar billede kasseper Nybegynder
27. september 2002 - 14:36 #10
og det gjorde den selvfølgelig :
C:\Program Files\NetBeans IDE 3.4
Netbeans sucks....:)
Tak for hjælpen.
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