Avatar billede hono Nybegynder
19. juni 2005 - 23:52 Der er 11 kommentarer og
1 løsning

Navn på mappe

Hvordan kan man med java finde navnet på den mappe (evt. hele stien) på den fil koden befinder sig i?

På forhånd tak

Hono
Avatar billede mikkelbm Nybegynder
19. juni 2005 - 23:54 #1
File file = new File (".");
System.out.println (file.getAbsolutePath ());

Skulle kunne gøre det.
Avatar billede mikkelbm Nybegynder
19. juni 2005 - 23:55 #2
Hov... Det skal være uden punktum: new File ("");
Avatar billede arne_v Ekspert
19. juni 2005 - 23:56 #3
current dir er nemt:

System.getProperty("user.dir")

men det dir hvor ens .class fil eller .jar fil befinder sig er noget sværere - jeg
har dog engang lavet noget kode til det
Avatar billede arne_v Ekspert
19. juni 2005 - 23:57 #4
import java.util.*;

public class GetPathExt {
    private static String getPath(Class cls) {
        String cn = cls.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 = GetPathExt.class.getClassLoader().getResource(sb.toString()).getPath();
        int ix = path.indexOf("!");
        if(ix >= 0) {
            path = path.substring(0, ix);
            int ix2 = path.lastIndexOf("/");
            return path.substring(6, ix2 + 1);
        } else {
            int ix2 = path.lastIndexOf("/");
            return path.substring(1, ix2 + 1);
        }
    }
    public static void main(String[] args) {
        System.out.println(GetPathExt.getPath(GetPathExt.class));
    }
}
Avatar billede arne_v Ekspert
19. juni 2005 - 23:59 #5
koden forventer vist at GetPath og den klasse man skal vide hvor kommer fra
loades af samme classloader, men normalt vil det nok være tilfældet
Avatar billede arne_v Ekspert
20. juni 2005 - 00:02 #6
(new File ("")).getAbsolutePath() kendte jeg ikke
Avatar billede mikkelbm Nybegynder
20. juni 2005 - 00:08 #7
Faldt lige over et par linjer der skulle kunne gøre det samme som dit eksempel, Arne:

String me = getClass().getName().replaceAll("\\.", "/");
String urlString = ClassLoader.getSystemResource(me + ".class").toString();
System.out.println (urlString);
Avatar billede arne_v Ekspert
20. juni 2005 - 00:11 #8
prøv og test den hvis class'en ligger i en jar fil !
Avatar billede mikkelbm Nybegynder
20. juni 2005 - 00:12 #9
Ahh... Nej, det vil nok ikke fungere :)
Avatar billede arne_v Ekspert
20. juni 2005 - 00:15 #10
den første del af min kode kan dog sikkert godt erstattes af en simpel replaceAll

den sidste del håndterer jar fil syntax
Avatar billede hono Nybegynder
23. juni 2005 - 12:52 #11
mikkelbm >> Det virker perfekt. Smid et svar
Avatar billede mikkelbm Nybegynder
24. juni 2005 - 07:52 #12
Kommer her...
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

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