Como trabajar los path
Buen dia.
Hace dias estoy trabajando con aplicaciones que accesan algunos archivos donde se guarda la configuracion de la aplicacion y otros con los cuales trabaja la aplicacion, la aplicacion esta corriendo perfectamente, pero me ha surgido una pregunta, existe una forma de trabajar especificamente las direcciones o rutas de archivos, que pueda yo estandarizar las rutas y poder utilizar las variables de entorno para cualquier version de Windows, ejemplo, que pueda yo colocar una ruta como %systemrooot%/Mi_carpeta, o %programfiles%/Mi_programa, y aunque mi aplicacion trabaja con una ruta definida (C:/Archivos de programa/Mi_programa) para abrir la aplicacion y no he tenido problemas al ejecutarla sobre diferentes versiones de Windows, si quisiera ser un poco mas tecnico al momento de manejar los path.
Gracias.
Julian A. Franco
Cali, Colombia.
- Inicie sesión o regístrese para enviar comentarios
Para leer el path:
Si estas ocupando java puro:
System.getProperty("user.dir")
Si estas ocupando web:
request.getSession().getServletContext().getRealPath("/WEB-INF/");
Espero te sea util esta info.
Salu2.
Este puede ser el camino
Bueno, estuve leyendo un poco sobre el tema, pero hay algo que no me queda claro, este debe ser un archivo al cual se accesa mediante el System.getProperty("user.dir"); pero como se utiliza realmente.
public class MainClass {
public static void main(String[] a) {
String oldValue = System.clearProperty("java.class.path");
System.setProperty("user.dir", "C:/MyProg");
System.out.println(System.getProperty("user.dir"));
}
}
segun este codigo se debe enviar el path al cual deseo acceder, esto lo haria con el setProperty, pero esto deberia estar en el instalador para que se cree en el archivo de propiedades, por la idea es la aplicacion se instala complementamente y como ella tiene que accesar algunos archivos que el instalador coloca en C:/Windows y en C:/Archivos de programas, entonces deseo que la aplicacion accece a estas dos carpetas de manera nativa con %systemroot% y %programfiles% respectivamente, eso si, si existe una manera mas transparente de hacerlo. bienvenida sea.
Gracias.
Julian Franco.
Cali, Colombia
Variables de entorno
Las variables de entorno las puedes obtener así:
System.getenv("systemroot")
(o tal vez "%systemroot%", no sé en Windows). Para experimentar puedes ver todas las variables de entorno conSystem.getenv()
que te devuelve un mapa donde las llaves son los nombres de las variables.No veo por qué tienes que modificar propiedades de sistema (aunque se hace sólo en memoria eso del
System.setProperty
).System.getProperty("user.dir")
te devuelve una cadena con la ruta al directorio "home" del usuario que ejecuta el proceso. Hay varias propiedades más que puedes ver, si quieres verlas todas simplemente:System.getProperties().list(System.out)
y con eso ves todas las que hay (está la versión, el classpath, el home del usuario y algunas otras cosas).Variables de entorno
Pero!!!!, puedo yo accesar a un archivo por medio de alguno de estos metodos.
Ejemplo.
import java.io.File;
public class Main {
public static void main(String[] args) {
String filePath = "C:\\Archivos de programa\\Mi programa" ; Cambiar
File file = new File(filePath);
System.out.println(file.getPath());
}
}
Puedo reemplazar el filePath por
public class Main {
public static void main(String[] args) {
String filePath = "%programfiles%\Mi programa" ; Cambio
File file = new File(filePath);
System.out.println(file.getPath());
}
}
Esto es exactamente lo que necesito, por que en realidad lo que me comentan es como obtener las variables de entorno, pero como puedo aplicar yo esto a lo que realmente necesito.
Gracias.
Julian Franco
Cali, Colombia