Comment obtenir des ressources chemin d'accès au répertoire par programmation
J'ai le répertoire suivant la mise en page:
- src
- principale
- java
- ressources
- sql (scripts de base de données)
- printemps (configuration)
- webapp
Dans un ServletContextListener classe, je veux accéder à des fichiers dans le répertoire SQL et de les énumérer. Fondamentalement, mon problème est avec le chemin, car je sais que la liste des fichiers dans un répertoire en un mot est:
File folder = new File(path);
File[] listOfFiles = folder.listFiles();
Peut-être que je pourrais utiliser le ServletContextEvent
Objet à essayer de construire un chemin d'accès à resources/sql
public void contextInitialized(ServletContextEvent event) {
event.getServletContext(); //(getRealPath etc.)
}
Fait quelque chose existe pas de mettre le chemin en relatif, non-codé en dur chemin?
Quelque chose comme new File("classpath:sql")
(de préférence le printemps si possible) ou que dois-je faire avec le servletContext à point à resources/sql
?
- Il existe trois variantes de solutions, en fonction de la situation: stackoverflow.com/a/56327069/715269
Vous devez vous connecter pour publier un commentaire.
Je suis en supposant que le contenu de
src/main/resources/
est copié àWEB-INF/classes/
à l'intérieur de votre .la guerre au moment de la construction. Si c'est le cas, tu peux faire (en remplaçant les valeurs réelles de la classe et le chemin d'accès en cours de chargement).javax.servlet.ServletContextListener
. J'ai utilisé cela comme un exemple, parce que la question avait un extrait decontextInitialized
qui est une méthode définie par leServletContextListener
interface.Enfin, c'est ce que j'ai fait:
...
"/sql"
comme paramètre? J'ai des problèmes avec un slash, au Lieu"sql"
œuvres.Il est intéressant de noter que cela permettra de limiter vos options de déploiement,
ClassPathResource.getFile()
ne fonctionne que si le conteneur a explosé (décompressé) votre fichier war.Suffit d'utiliser com.google.commun.io.Ressources classe. Exemple:
Après que vous avez des méthodes comme: .getContent(), .getFile(), .getPath (), etc