una ruta pert operaciones metodo investigacion holguras hacer empresa ejemplo critica cpm como calculo java spring io

java - pert - Cómo obtener la ruta del directorio de recursos mediante programación



ruta critica pdf (3)

Tengo el siguiente diseño de directorio:

  • src
    • principal
      • Java
      • recursos
        • sql (scripts para la base de datos)
        • primavera (configuración)
      • Aplicación Web

Dentro de una clase ServletContextListener, quiero acceder a los archivos en el directorio SQL y listarlos. Básicamente mi problema es con la ruta, porque sé que enumerar los archivos debajo de un directorio en pocas palabras es:

File folder = new File(path); File[] listOfFiles = folder.listFiles();

Tal vez podría usar el Objeto ServletContextEvent para intentar crear una ruta a los resources/sql

public void contextInitialized(ServletContextEvent event) { event.getServletContext(); //(getRealPath etc.) }

¿Existe algo para establecer esa ruta de una manera relativa, no codificada? Algo así como un new File("classpath:sql") (preferiblemente en primavera si es posible) o ¿qué debo hacer con servletContext para apuntar a resources/sql ?


Asumo que el contenido de src/main/resources/ se copia a WEB-INF/classes/ dentro de tu .war en tiempo de compilación. Si ese es el caso, puede hacerlo (sustituyendo los valores reales por el nombre de clase y la ruta que se está cargando).

URL sqlScriptUrl = MyServletContextListener.class .getClassLoader().getResource("sql/script.sql");


Finalmente esto es lo que hice.

private File getFileFromURL() { URL url = this.getClass().getClassLoader().getResource("/sql"); File file = null; try { file = new File(url.toURI()); } catch (URISyntaxException e) { file = new File(url.getPath()); } finally { return file; } }

...

File folder = getFileFromURL(); File[] listOfFiles = folder.listFiles();


import org.springframework.core.io.ClassPathResource; ... File folder = new ClassPathResource("sql").getFile(); File[] listOfFiles = folder.listFiles();

Vale la pena señalar que esto limitará sus opciones de implementación, ClassPathResource.getFile() solo funciona si el contenedor ha explotado (descomprimido) su archivo war.