2010-04-23 11 views

Respuesta

23

Haz uso del classpath.

ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); 
URL url = classLoader.getResource("path/to/folder"); 
File file = new File(url.toURI()); 
// ... 
+3

Si por "carpeta de ruta/a /" quiere decir que yo Necesito insertar la ruta a la carpeta del proyecto entonces, ¿qué sentido tiene ...? –

+5

Es relativo a la raíz del classpath. No necesita 'c:/absolute/path/to/java/program' delante de él. Prueba lo de arriba Imprime el resultado de 'url' o' file'.Juega con eso y lo entenderás. – BalusC

+0

Todavía no entiendo qué debo poner en lugar de -> "ruta/a/carpeta" –

0

Puede comprobar este código de ejemplo para entender cómo se puede acceder a la ruta relativa utilizando el código de ejemplo java

import java.io.File; 

public class MainClass { 

    public static void main(String[] args) { 

    File relative = new File("html/javafaq/index.html"); 

    System.out.println("relative: "); 
    System.out.println(relative.getName()); 
    System.out.println(relative.getPath()); 
    } 
} 

Aquí getPath mostrará la ruta relativa del archivo.

+6

Esta es la forma incorrecta. La ruta será relativa al directorio de trabajo. Es decir. la carpeta desde la que ** ejecutaste ** el programa, no la carpeta donde se está ejecutando el programa en sí mismo. Nunca uses rutas relativas en 'java.io.File', eso es solo un problema de portabilidad. – BalusC

+0

@BalusC, ¿me puede sugerir de otra manera? – gmhk

+0

Ya he respondido eso en esta pregunta. – BalusC

0

En Android, se accede a metadatos a nivel de aplicación a través de la referencia Context, de la cual una actividad es descendiente.

Por ejemplo, puede obtener el directorio de origen a través de la propiedad getApplicationInfo().sourceDir. También existen métodos para otras carpetas (directorio de activos, directorio de datos, directorio de la base de datos, etc.).

+0

No encontré cómo puedo obtener la ruta de la aplicación con esto. ¿Puede ser más específico? –

+0

De esta forma puedo obtener solo las carpetas que están en el paquete. Necesito obtener una ruta relativa a una carpeta que creé dentro del proyecto (no dentro del paquete). Carpeta como activos. ¿Me puede dar la función que puede hacerlo? –

18

¿Está buscando la carpeta raíz de la aplicación? Entonces usaría

String path = getClass().getClassLoader().getResource(".").getPath(); 

para realmente "descubrir dónde estoy".

+0

Intenté esto antes y obtengo "/", pero esto no está bien. (porque cuando intento encontrar un archivo, no existe) –

+0

¿En qué plataforma/sistema operativo se está ejecutando? Solo "/" indicaría Unix/linux/OSX, y que está ejecutando su aplicación desde la ruta raíz del sistema de archivos. Si eso no es correcto, da más información. – Kennet

+1

Mi sistema operativo es win7 la ruta es: "D: \ Eclipse \ Workspace \ Project Name" No olvide que esta es una aplicación de Android que estoy ejecutando con el emulador –

6
File relativeFile = new File(getClass().getResource("/icons/forIcon.png").toURI()); 
myJFrame.setIconImage(tk.getImage(relativeFile.getAbsolutePath())); 
1

Con esta me encontré a mi ruta del proyecto:

new File("").getAbsolutePath(); 

este retorno "c: \ Projects \ SampleProject"

-1

En general, queremos agregar archivos de imágenes, txt, doc y etc. dentro de nuestro proyecto Java y una carpeta específica como/images. encontré en busca de que en JAVA, podemos obtener la ruta desde la raíz a la carpeta que especifique como,

String myStorageFolder= "/images"; // this is folder name in where I want to store files. 

String getImageFolderPath= request.getServletContext().getRealPath(myStorageFolder); 

En este caso, la solicitud es objeto de HttpServletRequest. Obtendrá todo el camino de la carpeta Root a/images. Obtendrá una salida como,

C: \ Users \ STARK \ áreas de trabajo \ MyEclipse.metadata.me_tcat7 \ webapps \ JavaProject \ imágenes

Cuestiones relacionadas