J'ai une application Web Java que je crée en tant que WAR et que je déploie sur Apache Tomcat. Disons que j'ai un mécanisme intégré à mon application pour déterminer quand elle est déployée et exécutée avec succès sur le serveur (je l'appellerai SuccessHandler). Conditionnellement, dans SuccessHandler, je dois supprimer par programme un fichier du répertoire de déploiement du projet (par exemple, path-to-tomcat/webapps/my-project/file.txt). Comment puis-je faire cela?

Disclamer: Je suis capable de charger / supprimer des fichiers des répertoires de ressources qui résident dans path-to-tomcat/webapps/my-project/WEB-INF/ après le déploiement + Je suis capable de supprimer les fichiers en utilisant un chemin absolu codé en dur mais ce n'est pas ce que je recherche. Je souhaite pouvoir supprimer des fichiers quel que soit l'endroit où l'application est déployée.

0
nyxz 28 déc. 2015 à 18:06

3 réponses

Meilleure réponse

Vous ne pouvez pas le faire de manière fiable. L'intérieur de l'application n'est pas accessible en écriture dans le cas général. En particulier, l'archive peut être exécutée sur place et non explosée; même si ce n'est pas le cas, rien n'empêche le serveur de restaurer le fichier à chaque lancement. Vous aurez besoin d'un autre moyen de sauvegarder votre état.

4
chrylis -cautiouslyoptimistic- 28 déc. 2015 à 15:10

Il semble que vous deviez supprimer le fichier uniquement pour en écrire un nouveau à sa place.

Peut-être que l'écrasement d'un fichier est une meilleure approche?

Je suppose que vous avez le répertoire dans lequel votre application est déployée stocké sous forme de fichier, vous pouvez appeler directory.getAbsolutePath () à ce sujet et ajouter votre "chemin d'accès au fichier" à ce chemin.

0
Timothy Dee 28 déc. 2015 à 15:16

Vous pouvez stocker et supprimer des fichiers en dehors de votre dossier d'application Web, par exemple dans path-to-tomcat/lib/....

0
Maxim Votyakov 28 déc. 2015 à 15:16