Avatar billede Slettet bruger
08. august 2004 - 00:19 Der er 12 kommentarer og
1 løsning

Real path

Hejsa,

Hvordan får jeg fat i en real-path til min applikation.
Den ligger i m:\eclipse\JavaTest\txtFiles\text.txt ??
Min .java fil ligger i JavaTest dir'et
Avatar billede Slettet bruger
08. august 2004 - 00:20 #1
Hovsa, en lille fejl
applikation = text fil (test.txt) :-)
Avatar billede arne_v Ekspert
08. august 2004 - 00:21 #2
Sti til current dir får du med:
  System.getProperty("user.dir")

Sti til .java fil kan du ikke få.

Sti til .class/.jar fil kan du godt få. Jeg finder lige noget kode.
Avatar billede arne_v Ekspert
08. august 2004 - 00:23 #3
String cn = Foobar.class.getName();
        StringTokenizer st = new StringTokenizer(cn,".");
        StringBuffer sb = new StringBuffer("");
        boolean first = true;
        while(st.hasMoreTokens()) {
            if(first) {
                first = false;
            } else {
                sb.append("/");
            }
            sb.append(st.nextToken());
        }
        sb.append(".class");
        String path = GetPath.class.getClass().getClassLoader().getSystemResource(sb.toString()).getPath();
Avatar billede arne_v Ekspert
08. august 2004 - 00:24 #4
Den returnerer enten:

sti til .class fil

eller

sti til .jar fil ! sti til .class fil inden i .jar filen
Avatar billede Slettet bruger
08. august 2004 - 00:30 #5
Lad mig se om jeg kan præcisere det lidt mere.
Det jeg skal bruge er stien til nedenstående path:

M:\Eclipse\workspace\JavaTest\test\dir

under "dir" ligger den klasse som jeg arbejder med. Efter "dir" kommer "\txtFiles", men den er altid konstant. Problemmet er at ovenstående dir ikke er den samme når programmet bliver afviklet på en anden pc.
Avatar billede Slettet bruger
08. august 2004 - 00:31 #6
Hvis jeg skriver:

System.getProperty("dir")

så returnere den "m:\"
Avatar billede arne_v Ekspert
08. august 2004 - 00:37 #7
Jeg kan ikke tilføje meget til det jeg skrev først.

Hvis textfiles dir ligger under current dir når programmet køres
så bruger du System.getProperty("user.dir") og tilføje den konstante del.

Hvis textfiles dir ligger under det dir hvor din class file ligger, så
brugen du den kode jeg angav ovenfor til at finde stien til class filen, smider
selve navnet på filen væk og tilføjer den konstante del.
Avatar billede arne_v Ekspert
08. august 2004 - 23:51 #8
Hvis du skal læse den text fil kan jeg anbefale:

InputStream in = getClass().getClassLoader().getResource("test.txt").openStream();

som åbner filen i classpath root eller

InputStream in = getClass().getClassLoader().getResource("txtfiles/test.txt").openStream();

som åbner filen i txtfiles lige under classpath root.

Fprdelen ved at gøre det på den måde er at det også virker når både class
og txt filer er pakket i en jar fil.
Avatar billede arne_v Ekspert
08. august 2004 - 23:51 #9
OK ?
Avatar billede Slettet bruger
08. august 2004 - 23:52 #10
Jeg tester det i morgen, er lige på vej i seng.
Avatar billede Slettet bruger
10. august 2004 - 09:06 #11
Hejsa

Da app. kører på en database, valgte jeg at lave det sådan at når programmet starter første gang skal brugeren vælge et dir til text-filerne. Måske ikke den pæneste måde, men den virker.

Jeg fik aldrig din løsning til at virke Arne :-(
Avatar billede Slettet bruger
25. april 2005 - 11:38 #12
Ser ikke ud til at være lukket
Avatar billede Slettet bruger
25. april 2005 - 11:39 #13
.
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