Je dois vérifier les autorisations de création de fichiers pour un répertoire spécifique.Quelle est la meilleure façon de vérifier les autorisations de création de fichiers dans Java
J'ai essayé:
try {
AccessController.checkPermission(new FilePermission("directory_path", "write"));
// Have permission
} catch (SecurityException e) {
// Doesn't have permission
}
... mais toujours lancers francs SecurityException (pour autant que je l'ai compris ce ne vérifie les autorisations sous-jacentes fs, mais certains paramètres JVM qui doivent être configurés explicitement).
Une autre façon possible était d'utiliser quelque chose comme ceci:
File f = new File("directory_path");
if(f.canWrite()) {
// Have permission
} else {
// Doesn't have permission
}
... mais cela revient vrai même si je ne peux pas créer un fichier dans le répertoire spécifié (Par exemple, je ne peux pas créer un fichier dans « c: \ » quand je cours mon application sous l'utilisateur sans privilèges d'administrateur, mais f.canWrite() renvoie la valeur true).
En fin de compte, je l'ai fait pirater semblable à ceci:
File f = new File("directory_path");
try {
File.createTempFile("check", null, f).delete();
// Have permission
} catch (IOException e) {
// Doesn't have permission
}
... mais cela peut servir que comme une solution temporaire puisque je dois obtenir ces autorisations pour presque tous les dossiers sur les fs du client.
Est-ce que quelqu'un sait comment obtenir les autorisations de création de fichiers REAL bien, sans causer de problèmes de performance et de hacks décrits ci-dessus?
Ce que vous avez décrit est fondamentalement la même chose que je fais dans la 3ème liste. Comme je l'ai dit, je dois collecter des permissions de création de fichiers pour presque tous les fichiers présents sur PC. J'utiliserai cette information pour l'analyse et la création de fichiers plus tard dans certains de ces répertoires. Cela signifie que j'aurai la possibilité de cette "activité asynchrone" et je suis d'accord avec cela. Le problème est que créer/supprimer un fichier dans chaque dossier juste pour comprendre est là des autorisations ne ressemble pas à une bonne soution ... –