Je dois changer les permissions d'une série de fichiers en Java sous
MacOSX. Savez-vous s'il existe un moyen de faire l'équivalent de :
chmod 644 <fichiers> en java ?
Idéalement, il faudrait que ceci soit portable sous Linux/Unix.
J'ai bien vu que l'on peut rendre un fichier accessible en lecture seule
avec java.io.File.setReadOnly() mais peut-on faire l'inverse (je ne
trouve rien dans la javadoc de java.io.File) ?
Par ailleurs, j'ai aussi vu qu'il y avait une classe
java.io.FilePermission, mais si je comprends bien, celle-ci permet
d'accéder aux permissions d'un fichier (connaître ses attributs rwx)
mais pas de les changer. Me trompe-je ?
Johann
--
enge hosen MACHEN IMPOTENT!!! siet gut aus für DIE ZUKUMPFT!!!!
HIPHOP WILL SURWIFE!!! GAYROCK WILL BE DEAD!!!! HAHAHAHA!!!!
("MC COOL" in <ed0a9bf9.0406250636.70262efa@posting.google.com>)
Johann Danke Johann! (Du bist doch Deutsch, oder?)
Pour l'instant, mon appli ne tourne que sur des Unix (OSX, Linux et SGI) et je ne connais pas d'Unix où il n'y pas la commande 'chmod', c'est donc en effet une possibilité. Mais si un jour je dois la faire tourner sur un Windows, je serai coincé. En fait, je cherche plus généralement de la doc sur la gestion des attributs de fichiers en Java. java.io.FilePermission me semble bien mais peut-on gérer les attributs 'group' et 'other' (pas seulement 'user') ? Je souhaiterais rendre un groupe de fichiers/répertoires lisibles par tous (perms au moins 444 pour les fichiers et 555 pour les reps). Bon pour l'instant, je vais utiliser ta solution. Merci. F.
Johann Burkard wrote:
flipouk wrote:
Savez-vous s'il existe un moyen de faire l'équivalent de :
chmod 644 <fichiers> en java ?
Johann
Danke Johann! (Du bist doch Deutsch, oder?)
Pour l'instant, mon appli ne tourne que sur des Unix (OSX, Linux et SGI)
et je ne connais pas d'Unix où il n'y pas la commande 'chmod', c'est
donc en effet une possibilité. Mais si un jour je dois la faire tourner
sur un Windows, je serai coincé.
En fait, je cherche plus généralement de la doc sur la gestion des
attributs de fichiers en Java.
java.io.FilePermission me semble bien mais peut-on gérer les attributs
'group' et 'other' (pas seulement 'user') ?
Je souhaiterais rendre un groupe de fichiers/répertoires lisibles par
tous (perms au moins 444 pour les fichiers et 555 pour les reps).
Bon pour l'instant, je vais utiliser ta solution. Merci.
F.
Johann Danke Johann! (Du bist doch Deutsch, oder?)
Pour l'instant, mon appli ne tourne que sur des Unix (OSX, Linux et SGI) et je ne connais pas d'Unix où il n'y pas la commande 'chmod', c'est donc en effet une possibilité. Mais si un jour je dois la faire tourner sur un Windows, je serai coincé. En fait, je cherche plus généralement de la doc sur la gestion des attributs de fichiers en Java. java.io.FilePermission me semble bien mais peut-on gérer les attributs 'group' et 'other' (pas seulement 'user') ? Je souhaiterais rendre un groupe de fichiers/répertoires lisibles par tous (perms au moins 444 pour les fichiers et 555 pour les reps). Bon pour l'instant, je vais utiliser ta solution. Merci. F.
Isammoc
Savez-vous s'il existe un moyen de faire l'équivalent de : chmod 644 <fichiers> en java ?
Johann Danke Johann! (Du bist doch Deutsch, oder?)
Pour l'instant, mon appli ne tourne que sur des Unix (OSX, Linux et SGI) et je ne connais pas d'Unix où il n'y pas la commande 'chmod', c'est donc en effet une possibilité. Mais si un jour je dois la faire tourner sur un Windows, je serai coincé. En fait, je cherche plus généralement de la doc sur la gestion des attributs de fichiers en Java. java.io.FilePermission me semble bien mais peut-on gérer les attributs 'group' et 'other' (pas seulement 'user') ? Je souhaiterais rendre un groupe de fichiers/répertoires lisibles par tous (perms au moins 444 pour les fichiers et 555 pour les reps). Bon pour l'instant, je vais utiliser ta solution. Merci. F.
AMHA, ce n'est pas portable. Je pense que sous Windows (je me trompe surement), il n'y a pas de gestion des droits d'acces ou pas du meme genre que ceux d'Unix. De plus, je pense que FilePermission ne peut regarder uniquement les permissions de l'utilisateur en cours. Et changer les permissions d'un fichier n'est pas du ressors (en regle général) de l'utilisateur qui l'utilise...
Enfin, si tu es plus clairvoyant que moi, le sujet m'interesse également.
-- Isammoc
Savez-vous s'il existe un moyen de faire l'équivalent de :
chmod 644 <fichiers> en java ?
Johann
Danke Johann! (Du bist doch Deutsch, oder?)
Pour l'instant, mon appli ne tourne que sur des Unix (OSX, Linux et SGI)
et je ne connais pas d'Unix où il n'y pas la commande 'chmod', c'est donc
en effet une possibilité. Mais si un jour je dois la faire tourner sur un
Windows, je serai coincé.
En fait, je cherche plus généralement de la doc sur la gestion des
attributs de fichiers en Java.
java.io.FilePermission me semble bien mais peut-on gérer les attributs
'group' et 'other' (pas seulement 'user') ?
Je souhaiterais rendre un groupe de fichiers/répertoires lisibles par tous
(perms au moins 444 pour les fichiers et 555 pour les reps).
Bon pour l'instant, je vais utiliser ta solution. Merci.
F.
AMHA, ce n'est pas portable.
Je pense que sous Windows (je me trompe surement), il n'y a pas de gestion
des droits d'acces ou pas du meme genre que ceux d'Unix.
De plus, je pense que FilePermission ne peut regarder uniquement les
permissions de l'utilisateur en cours.
Et changer les permissions d'un fichier n'est pas du ressors (en regle
général) de l'utilisateur qui l'utilise...
Enfin, si tu es plus clairvoyant que moi, le sujet m'interesse également.
Johann Danke Johann! (Du bist doch Deutsch, oder?)
Pour l'instant, mon appli ne tourne que sur des Unix (OSX, Linux et SGI) et je ne connais pas d'Unix où il n'y pas la commande 'chmod', c'est donc en effet une possibilité. Mais si un jour je dois la faire tourner sur un Windows, je serai coincé. En fait, je cherche plus généralement de la doc sur la gestion des attributs de fichiers en Java. java.io.FilePermission me semble bien mais peut-on gérer les attributs 'group' et 'other' (pas seulement 'user') ? Je souhaiterais rendre un groupe de fichiers/répertoires lisibles par tous (perms au moins 444 pour les fichiers et 555 pour les reps). Bon pour l'instant, je vais utiliser ta solution. Merci. F.
AMHA, ce n'est pas portable. Je pense que sous Windows (je me trompe surement), il n'y a pas de gestion des droits d'acces ou pas du meme genre que ceux d'Unix. De plus, je pense que FilePermission ne peut regarder uniquement les permissions de l'utilisateur en cours. Et changer les permissions d'un fichier n'est pas du ressors (en regle général) de l'utilisateur qui l'utilise...
Enfin, si tu es plus clairvoyant que moi, le sujet m'interesse également.
-- Isammoc
David Molinier
Johann Burkard wrote:
flipouk wrote:
Savez-vous s'il existe un moyen de faire l'équivalent de : chmod 644 <fichiers> en java ?
Une remarque : si la commande (ici chmod) n'est pas dans le PATH du contexte de lancement de la JVM, je pense que ça ne marche pas.
Pour éviter toute surprise, il vaut préciser le nom complet (chemin inclus) de la commande ; ex: /usr/bin/chmod.
Cependant, en accédant directement aux commandes système de l'OS, on limite fortement la portabilité.
Pour l'instant, mon appli ne tourne que sur des Unix (OSX, Linux et SGI) et je ne connais pas d'Unix où il n'y pas la commande 'chmod', c'est donc en effet une possibilité. Mais si un jour je dois la faire tourner sur un Windows, je serai coincé.
Reste la possibilité d'implémenter 1 classe par OS cible, et de recourir à une factory pour utiliser la bonne classe, en fonction du contexte d'exécution.
-- David Molinier <*>
Johann Burkard wrote:
flipouk wrote:
Savez-vous s'il existe un moyen de faire l'équivalent de :
chmod 644 <fichiers> en java ?
Une remarque : si la commande (ici chmod) n'est pas dans le PATH du
contexte de lancement de la JVM, je pense que ça ne marche pas.
Pour éviter toute surprise, il vaut préciser le nom complet (chemin
inclus) de la commande ; ex: /usr/bin/chmod.
Cependant, en accédant directement aux commandes système de l'OS, on
limite fortement la portabilité.
Pour l'instant, mon appli ne tourne que sur des Unix (OSX, Linux et SGI)
et je ne connais pas d'Unix où il n'y pas la commande 'chmod', c'est
donc en effet une possibilité. Mais si un jour je dois la faire tourner
sur un Windows, je serai coincé.
Reste la possibilité d'implémenter 1 classe par OS cible, et de recourir
à une factory pour utiliser la bonne classe, en fonction du contexte
d'exécution.
Une remarque : si la commande (ici chmod) n'est pas dans le PATH du contexte de lancement de la JVM, je pense que ça ne marche pas.
Pour éviter toute surprise, il vaut préciser le nom complet (chemin inclus) de la commande ; ex: /usr/bin/chmod.
Cependant, en accédant directement aux commandes système de l'OS, on limite fortement la portabilité.
Pour l'instant, mon appli ne tourne que sur des Unix (OSX, Linux et SGI) et je ne connais pas d'Unix où il n'y pas la commande 'chmod', c'est donc en effet une possibilité. Mais si un jour je dois la faire tourner sur un Windows, je serai coincé.
Reste la possibilité d'implémenter 1 classe par OS cible, et de recourir à une factory pour utiliser la bonne classe, en fonction du contexte d'exécution.
-- David Molinier <*>
captainpaf
Reste la possibilité d'implémenter 1 classe par OS cible, et de recourir à une factory pour utiliser la bonne classe, en fonction du contexte d'exécution.
oui, ceci semble vraiment être la meilleur méthode. Aller je me lance (code non testé :( ) :
<code> //== 1) faire une class par os traités
public class WindowsXPChmodToolkit extends ChmodToolkit { public boolean chmod(File file, String rights) { //... return true; } //... }
public class linuxChmodToolkit extends ChmodToolkit { public boolean chmod(File file, String rights) { //... return true; } //... } //...
//== 2) créer la factory qui retourne la bonne class
public abstract class ChmodToolkit { private static final LinuxChmodToolkit linuxChmodToolkit = new linuxChmodToolkit(); private static final WindowsXPChmodToolkit windowsXPChmodToolkit = new windowsXPChmodToolkit(); //...
/** * Récupère la bonne factory selon les différents os * si l'os n'est pas supporté, on retourne null * le mieux serait de générer une exception */ public static final ChmodToolkit getFactory() { String osName = System.getProperty("os.name"); //== vérifier le nom du system d'exploitation : je ne l'ai pas fait if(osName.equals("linux"); { return linuxChmodToolkit; } else if(osName.equals("windows xp") { return windowsXPChmodToolkit; } // générer une exception içi : l'os n'est pas supporté return null; }
public boolean chmod(File file, String rights); } </code>
Je n'ai pas vu de class qui faisait ce que tu demande sur le net. J'ai peut être mal cherché ? Si elle n'existe pas déjà, ça serait sympa si tu pouvais mettre ensuite ta class à disposition de tout le monde.
bon courage.
Reste la possibilité d'implémenter 1 classe par OS cible, et de recourir à
une factory pour utiliser la bonne classe, en fonction du contexte
d'exécution.
oui, ceci semble vraiment être la meilleur méthode.
Aller je me lance (code non testé :( ) :
<code>
//== 1) faire une class par os traités
public class WindowsXPChmodToolkit extends ChmodToolkit
{
public boolean chmod(File file, String rights)
{
//...
return true;
}
//...
}
public class linuxChmodToolkit extends ChmodToolkit
{
public boolean chmod(File file, String rights)
{
//...
return true;
}
//...
}
//...
//== 2) créer la factory qui retourne la bonne class
public abstract class ChmodToolkit
{
private static final LinuxChmodToolkit linuxChmodToolkit = new
linuxChmodToolkit();
private static final WindowsXPChmodToolkit windowsXPChmodToolkit =
new windowsXPChmodToolkit();
//...
/**
* Récupère la bonne factory selon les différents os
* si l'os n'est pas supporté, on retourne null
* le mieux serait de générer une exception
*/
public static final ChmodToolkit getFactory()
{
String osName = System.getProperty("os.name");
//== vérifier le nom du system d'exploitation : je ne l'ai pas
fait
if(osName.equals("linux");
{
return linuxChmodToolkit;
}
else if(osName.equals("windows xp")
{
return windowsXPChmodToolkit;
}
// générer une exception içi : l'os n'est pas supporté
return null;
}
public boolean chmod(File file, String rights);
}
</code>
Je n'ai pas vu de class qui faisait ce que tu demande sur le net. J'ai
peut être mal cherché ?
Si elle n'existe pas déjà, ça serait sympa si tu pouvais mettre ensuite
ta class à disposition de tout le monde.
Reste la possibilité d'implémenter 1 classe par OS cible, et de recourir à une factory pour utiliser la bonne classe, en fonction du contexte d'exécution.
oui, ceci semble vraiment être la meilleur méthode. Aller je me lance (code non testé :( ) :
<code> //== 1) faire une class par os traités
public class WindowsXPChmodToolkit extends ChmodToolkit { public boolean chmod(File file, String rights) { //... return true; } //... }
public class linuxChmodToolkit extends ChmodToolkit { public boolean chmod(File file, String rights) { //... return true; } //... } //...
//== 2) créer la factory qui retourne la bonne class
public abstract class ChmodToolkit { private static final LinuxChmodToolkit linuxChmodToolkit = new linuxChmodToolkit(); private static final WindowsXPChmodToolkit windowsXPChmodToolkit = new windowsXPChmodToolkit(); //...
/** * Récupère la bonne factory selon les différents os * si l'os n'est pas supporté, on retourne null * le mieux serait de générer une exception */ public static final ChmodToolkit getFactory() { String osName = System.getProperty("os.name"); //== vérifier le nom du system d'exploitation : je ne l'ai pas fait if(osName.equals("linux"); { return linuxChmodToolkit; } else if(osName.equals("windows xp") { return windowsXPChmodToolkit; } // générer une exception içi : l'os n'est pas supporté return null; }
public boolean chmod(File file, String rights); } </code>
Je n'ai pas vu de class qui faisait ce que tu demande sur le net. J'ai peut être mal cherché ? Si elle n'existe pas déjà, ça serait sympa si tu pouvais mettre ensuite ta class à disposition de tout le monde.
Pour l'instant, mon appli ne tourne que sur des Unix (OSX, Linux et SGI) et je ne connais pas d'Unix où il n'y pas la commande 'chmod', c'est donc en effet une possibilité. Mais si un jour je dois la faire tourner sur un Windows, je serai coincé.
Pour Windows, tu peux utiliser JNI et t'écrire quelques functions natives. Ou bien quelque chose comme <http://nativecall.sourceforge.net/> ou <http://jniwrapper.com/index.jsp>.
Johann -- Im Klartext: Wann verpisst Du Dich endlich? Und wann endlich gibst Du Deinen wahren Namen bekannt, so wie Du es von den andern forderst, Lamer? (Netzterrorist Michael Enezian aka "chiapas" in )
Pour l'instant, mon appli ne tourne que sur des Unix (OSX, Linux et SGI)
et je ne connais pas d'Unix où il n'y pas la commande 'chmod', c'est
donc en effet une possibilité. Mais si un jour je dois la faire tourner
sur un Windows, je serai coincé.
Pour Windows, tu peux utiliser JNI et t'écrire quelques functions
natives. Ou bien quelque chose comme
<http://nativecall.sourceforge.net/> ou <http://jniwrapper.com/index.jsp>.
Johann
--
Im Klartext: Wann verpisst Du Dich endlich? Und wann endlich gibst Du
Deinen wahren Namen bekannt, so wie Du es von den andern forderst,
Lamer? (Netzterrorist Michael Enezian aka "chiapas" in
<9F7FBD878053049B.BE8599F60CFD1B3E@pevuboqw.ivurtagl>)
Pour l'instant, mon appli ne tourne que sur des Unix (OSX, Linux et SGI) et je ne connais pas d'Unix où il n'y pas la commande 'chmod', c'est donc en effet une possibilité. Mais si un jour je dois la faire tourner sur un Windows, je serai coincé.
Pour Windows, tu peux utiliser JNI et t'écrire quelques functions natives. Ou bien quelque chose comme <http://nativecall.sourceforge.net/> ou <http://jniwrapper.com/index.jsp>.
Johann -- Im Klartext: Wann verpisst Du Dich endlich? Und wann endlich gibst Du Deinen wahren Namen bekannt, so wie Du es von den andern forderst, Lamer? (Netzterrorist Michael Enezian aka "chiapas" in )
flipouk
flipouk wrote:
Salut,
Je dois changer les permissions d'une série de fichiers en Java sous MacOSX. Savez-vous s'il existe un moyen de faire l'équivalent de : chmod 644 <fichiers> en java ? Idéalement, il faudrait que ceci soit portable sous Linux/Unix. J'ai bien vu que l'on peut rendre un fichier accessible en lecture seule avec java.io.File.setReadOnly() mais peut-on faire l'inverse (je ne trouve rien dans la javadoc de java.io.File) ? Par ailleurs, j'ai aussi vu qu'il y avait une classe java.io.FilePermission, mais si je comprends bien, celle-ci permet d'accéder aux permissions d'un fichier (connaître ses attributs rwx) mais pas de les changer. Me trompe-je ?
Merci pour toute suggestion ou lien.
F. Merci à tous pour vos réponses qui malheureusement confirment ce que je
pensais et avais trouvé en googlant : la gestion des perms de fichier n'est pas portable. Comme je n'y connais rien en Windows, je ne saurais pas comment les implémenter mais bon ce n'est pas grave, je vais faire cette partie de mon appli 'unix only' pour le moment. Dommage tout de même... :( F.
flipouk wrote:
Salut,
Je dois changer les permissions d'une série de fichiers en Java sous
MacOSX. Savez-vous s'il existe un moyen de faire l'équivalent de :
chmod 644 <fichiers> en java ?
Idéalement, il faudrait que ceci soit portable sous Linux/Unix.
J'ai bien vu que l'on peut rendre un fichier accessible en lecture seule
avec java.io.File.setReadOnly() mais peut-on faire l'inverse (je ne
trouve rien dans la javadoc de java.io.File) ?
Par ailleurs, j'ai aussi vu qu'il y avait une classe
java.io.FilePermission, mais si je comprends bien, celle-ci permet
d'accéder aux permissions d'un fichier (connaître ses attributs rwx)
mais pas de les changer. Me trompe-je ?
Merci pour toute suggestion ou lien.
F.
Merci à tous pour vos réponses qui malheureusement confirment ce que je
pensais et avais trouvé en googlant : la gestion des perms de fichier
n'est pas portable.
Comme je n'y connais rien en Windows, je ne saurais pas comment les
implémenter mais bon ce n'est pas grave, je vais faire cette partie de
mon appli 'unix only' pour le moment.
Dommage tout de même... :(
F.
Je dois changer les permissions d'une série de fichiers en Java sous MacOSX. Savez-vous s'il existe un moyen de faire l'équivalent de : chmod 644 <fichiers> en java ? Idéalement, il faudrait que ceci soit portable sous Linux/Unix. J'ai bien vu que l'on peut rendre un fichier accessible en lecture seule avec java.io.File.setReadOnly() mais peut-on faire l'inverse (je ne trouve rien dans la javadoc de java.io.File) ? Par ailleurs, j'ai aussi vu qu'il y avait une classe java.io.FilePermission, mais si je comprends bien, celle-ci permet d'accéder aux permissions d'un fichier (connaître ses attributs rwx) mais pas de les changer. Me trompe-je ?
Merci pour toute suggestion ou lien.
F. Merci à tous pour vos réponses qui malheureusement confirment ce que je
pensais et avais trouvé en googlant : la gestion des perms de fichier n'est pas portable. Comme je n'y connais rien en Windows, je ne saurais pas comment les implémenter mais bon ce n'est pas grave, je vais faire cette partie de mon appli 'unix only' pour le moment. Dommage tout de même... :( F.