2011-01-26 11 views

Respuesta

5

En muchos entornos, el usuario de la aplicación no puede leer ningún archivo fuera del directorio de implementación. Esto se hace principalmente con fines de seguridad; por ejemplo, si alguien piratea su aplicación, no podrá leer un archivo de contraseñas.

Y en entornos administrados profesionalmente, los desarrolladores a menudo no tienen voz en qué directorio se colocará la aplicación.

Así que si necesita leer un archivo como propiedades, imágenes, certificados, etc. puede colocarlo en el directorio de la aplicación (o archivo .war) y usar getRealPath ("") para obtener la ruta que necesita cargar .

Como alternativa puede colocar los archivos externos en la ruta de clases, pero a veces hay problemas con esto. Para archivos grandes, la mayoría de los servidores de aplicaciones intentarán cargar todo el archivo en la memoria y almacenarlo en caché si está en el classpath.

1

Por lo que recuerdo, lo he usado para guardar imágenes u otros archivos de datos, ya que le permite ver donde se implementa su aplicación en este momento. Por ejemplo, Eclipse y Tomcat crearán una carpeta temporal que está enterrada profundamente en algún lugar dentro de su perfil de Eclipse y desplegarán la aplicación allí.

1

Esta es una ruta real en el sistema de archivos.

De javadoc:

El camino real devuelta será de una manera apropiada para el sistema informático y operativo en el que el contenedor de servlets se está ejecutando, incluyendo los separadores de ubicación adecuados. Este método devuelve un valor nulo si el contenedor de servlets no puede traducir la ruta virtual a una ruta real por ningún motivo (como cuando el contenido está disponible desde un archivo .war).

Creo que está muy claro. ¿Porqué necesitamos esto? A veces las aplicaciones web realizan alguna manipulación en el sistema de archivos. Por ejemplo, lea cosas de archivos, escriba archivos, etc. Esta API le permite acceder al lugar donde se almacenan realmente sus JSP y otras cosas.

2

getRealPath() proporciona la ruta absoluta (en el sistema de archivos) que conduce a un archivo especificado en los parámetros de la llamada. Devuelve la ruta en el formato específico del sistema operativo. getContextPath(), por otro lado, devuelve el URI o la ruta relativa al recurso.

Cuestiones relacionadas