2009-07-15 21 views
20

Sto cercando di utilizzare un percorso relativo per individuare un file eseguibile all'interno di una classe Java, invece di linee di hard-coded che ha lavorato, ma con qualcosa di simile:Utilizzando relativo percorso della directory in Java

final static String directory = "../../../ggla/samples/obj/linux_x86"

fallisce ... qual è il modo corretto di utilizzare un percorso relativo in Java?

+0

Definire esito negativo. Quali messaggi di errore ricevi? Stai utilizzando il separatore di percorso corretto per il tuo sistema operativo (esiste una variabile di sistema Java per il separatore di percorsi che dovresti utilizzare)? –

+0

Qual è la tua directory corrente e dov'è quel file assolutamente? – akarnokd

risposta

35

La spiegazione più probabile è che la directory corrente non è dove si pensa che sia. È possibile controllare la proprietà del sistema di user.dir vedere ciò che il percorso di base dell'applicazione è, o si può fare qualcosa di simile:

System.out.println(new File(".").getCanonicalPath()); 

destra prima di utilizzare quel percorso relativo per eseguire il debug dove si avvia il riferimento relativi .

+1

ottime informazioni grazie! –

0

È possibile utilizzare percorsi relativi come descritto e che dovrebbe funzionare. Quindi l'errore è probabilmente da qualche altra parte.

Si prega di inviare un programma completo per riprodurre il tuo errore, quindi potremmo essere in grado di aiutare.

0

Vorrei iniziare utilizzando il separatore e il separatore di percorso specificati in Java File class. Tuttavia, come ho detto nel mio commento, ho bisogno di più informazioni di "non riuscire" ad essere di aiuto.

+0

Non conosco le altre piattaforme, ma su WinXP + e Linux, l'uso della barra diretta sembra funzionare. Ma +1 per File.separator. – akarnokd

+0

Di solito sono pigro nelle mie app personali e uso la barra diretta, ma nel codice di produzione (al lavoro), converto tutto in usando il separatore e il pathSeparator in File. –

0

Per il percorso relativo, è possibile utilizzare uno dei metodi forniti da java per l'inizio del percorso relativo come getRelativePath .... È necessario utilizzare/e non // nella stringa in java!

2

Utilizzare System.out.println (System.getProperty ("user.dir")); per vedere dove è la tua directory corrente. È quindi possibile utilizzare percorsi relativi da questo indirizzo.

In alternativa, se non è necessario aggiornare il file che si sta tentando di leggere, ottenerlo dal classpath utilizzando getResourceAsStream ("nomefile");

Karl

1

Quello che ti serve è getCanonicalPath o getCanonicalFile per risolvere i percorsi relativi.

System.out.println(new File("../../../ggla/samples/obj/linux_x86") 
    .getCanonicalPath()); 
+0

ottime informazioni grazie! –

Problemi correlati