[Java] Applicatie directory

Pagina: 1
Acties:

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Ik ben bezig met een Java applicatie, en nu heb ik de applicatie directory nodig voor het inladen van files welke in de applicatie directory staan (bij de class files dus).

Maar hoe krijg ik deze directory in een String.

File dir = new File(".') werkt niet, deze geeft de current directory welke niet altijd gelijk is aan de applicatie directory. Ook de System property "user.dir" is niet correct.

Iemand die weet hoe dit moet? Zo moeilijk kan het toch niet zijn?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 27-05 21:44

Robtimus

me Robtimus no like you

Goeie vraag.

Ik weet alleen dat het niet in System.getProperties() staat, tenzij je die zelf specificeerd (zoals bv JAVA_HOME of ANT_HOME),

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Daar staat het inderdaad niet in nee. Maar hoe kom ik dan aan die gegevens. Ik moet de directory hebben anders kan ik nooit die files inlezen...

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 27-05 22:34
getClass().getClassLoader().getResourceAs[Url,Stream](....)

Daarmee kun je dingen uit het classpath openen en java zoekt ze dan zelf op :)

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Uuhmm, oke. Bedankt, maar zou je een voorbeeld kunnen geven hoe ik die in een String krijg?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • momania
  • Registratie: Mei 2000
  • Laatst online: 09:02

momania

iPhone 30! Bam!

user.dir kan wel correct zijn, dan zal je waarschijnlijkje appplicatie niet vanuit die directory starten waar je files staan.

Neem je whisky mee, is het te weinig... *zucht*


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
user.dir geeft hetzelfde terug als "."
Ik heb gewoon een aantal class files in een directory. 1 daarvan is een Application welke ik start met NetBeans. Vervolgens vraag ik user.dir property op en print deze naar System.out. Ik krijg dan de directory waarin NetBeans staat geinstalleerd terug.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • SPee
  • Registratie: Oktober 2001
  • Laatst online: 27-05 10:23
Maar was het niet zo dat de ClassLoader de volledige locatie teruggaf?
En als hij in een jar bestand zat, hij ook die bij/in het pad meenam :?

let the past be the past.


  • FlowDesign
  • Registratie: Januari 2002
  • Laatst online: 09:18
getCodeBase() of getDocumentBase()
geeft een URL terug die naar de class files verwijst.

of werkt dit alleen bij applets?

veel info hier: [rml]FlowDesign in "[ Java] Subclasses vraagje"[/rml]

Mustang Mach-E SR RWD | MINI Countryman (F60) Cooper S (Stage 1 tuned)


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Volgens mij werkt dat alleen voor Applets, ik maak gebruik van Frames.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Ik gebruik nu:
code:
1
2
3
4
5
6
    private String getProjectFolder() {
        String myClassFile = getClass().getName() + ".class";
        URL url = getClass().getResource(myClassFile);
        File file = new File(url.getPath()).getParentFile();
        return file.toString();
    }

Alleen deze geeft het path terug met URL formaat, dus met %20 enzo. Ik moet het path hebben met spaties en slashes escaped. Zoiets als dit:
C:\\Projects\\MyProject\\Classes\\

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Iemand een betere oplossing, want ik kom er echt niet uit. :(

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • jopie1983
  • Registratie: November 2003
  • Laatst online: 25-02-2024
Als het bestand in dezelfde directory staat als je applicatie, kun je gewoon een new File object van dat bestand maken. Stel dat je bijvoorbeeld een bestand properties.txt wilt inlezen, dit staat gewoon in dezelfde directory, dan doe je gewoon new File("properties.txt"). Hij zal dan in de huidige dir kijken. Dan kun je dit File-object gewoon aan je stream meegeven.

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Nee, dat werkt dus niet. Want hij kijkt in de current directory, en dat is niet altijd de directory waar m'n applicatie staat. Als ik namelijk mijn applicatie vanuit NetBeans start, dan kijkt hij voor "properties.txt" in de directory waar NetBeans staat geinstalleerd. Dat werkt dus niet echt.

Ik snap ook niet waarom dit zo moeilijk moet? In Delphi is het heel simpel:
ExtractFilePath(Application.ExeName);

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Iemand?

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

Als het in je classpath zit kan je toch echt gewoon getClass().getResource(String) of getClass().getResourceAsStream(String) gebruiken. Met als String een escaped verwijzing naar de locate van de gewenste resource beginnende van je classpath root. Zoniet dan zal je in netbeans moeten ingeven wat je als working directory wil gebruiken.
Pagina: 1