L'un de nos clients utilise un logiciel de sécurité Novel qui verrouille parfois certains fichiers .class créés par notre logiciel. Cela provoque des problèmes désagréables pour eux lorsque cela se produit et j'essaie de trouver une solution de contournement que nous pourrions ajouter à notre gestion des erreurs pour résoudre ce problème quand il se présente. Je me demande s'il y a des appels dans l'API Java qui peuvent être utilisés pour détecter si un fichier est verrouillé, et si c'est le cas, déverrouillez-le.Verrouillage et déverrouillage de fichiers à l'aide de l'API Java
Répondre
Avant d'essayer d'écrire dans un fichier, vous pouvez vérifier si le fichier est accessible en écriture pour votre application Java en utilisant File.canWrite(). Cependant, vous pouvez toujours rencontrer un problème si l'application tierce verrouille le fichier entre votre vérification File.canWrite() et lorsque votre application tente réellement d'écrire. Pour cette raison, je voudrais coder votre application simplement pour aller de l'avant et essayer d'écrire dans le fichier et attraper ce que l'exception est levée lorsque le fichier est verrouillé. Je ne crois pas qu'il existe un moyen Java natif pour déverrouiller un fichier qui a été verrouillé par une autre application. Vous pouvez exécuter une commande shell en tant qu'utilisateur privilégié pour forcer les choses mais cela semble inélégant.
File.canWrite() a la condition de concurrence mentionnée par Asaph. Vous pouvez essayer FileChannel.lock() et obtenir un verrou exclusif sur le fichier. Tant que le .class est sur votre disque local, cela devrait fonctionner correctement (le verrouillage de fichier peut être problématique sur les disques en réseau). Sinon, selon la façon dont le nom de classe .class est découvert, vous pouvez créer un nouveau nom pour votre classe .class à chaque fois; alors si le logiciel anti-virus bloque votre classe initiale, vous pouvez toujours créer le nouveau. Que voulez-vous dire par "verrouillage d'un fichier"?
- 1. structure de données laide à la recherche java
- 2. Comment créer un bouton et un comportement de verrouillage/déverrouillage dans mon volet de préférences sécurisées?
- 3. Java EE concurrence et verrouillage
- 4. Verrouillage de fichier Java sur un réseau
- 5. Exécution d'un script lors du verrouillage ou du déverrouillage de Windows XP
- 6. fichiers de verrouillage dans les fenêtres
- 7. Déverrouillage non intrusif du fichier sous Windows
- 8. verrouillage et mise à jour d'un fichier En conséquence
- 9. Filestream, verrouillage et serlialization
- 10. Generics et de verrouillage sur les collections
- 11. Verrouillage de la chaîne via le verrouillage
- 12. Fichiers de ressources Java
- 13. comment créer des fichiers hbm à partir de fichiers java?
- 14. AppleScript pour la boîte de dialogue de déverrouillage de l'écran
- 15. Source sûre, verrouillage exclusif sur les fichiers
- 16. Problème avec java.util.logging et le fichier de verrouillage
- 17. Objets de simultanéité, de verrouillage et de dictionnaire C#
- 18. Déclaration de verrouillage C#
- 19. Verrouillage de sqlalchemy
- 20. Verrouillage et synchronisation dans DJango
- 21. Verrouillage C# et question de conception de filetage général
- 22. Code de verrouillage de processus Illustration nécessaire
- 23. Verrouillage réentrant
- 24. Fichiers temporaires Java et suppression automatique
- 25. API de transfert de fichiers Java
- 26. Mutation d'un objet de verrouillage
- 27. Rejoindre deux fichiers WAV à partir de Java?
- 28. Verrouillage et multi-thread dans dotNet
- 29. iPhone SDK: verrouillage de l'orientation
- 30. Différence entre verrou (verrou) et verrouillage (variable_qui_utilise_I_am_using)
Voulez-vous dire que le logiciel utilise les fichiers .class, et qu'ils ne peuvent donc pas être modifiés? Ou voulez-vous dire des choses comme troupeau (2)? – abyx