2016-03-21 1 views
0

Je lis des fichiers d'un répertoire d'entrée, en modifiant une partie de leur contenu et en l'écrivant dans le répertoire de sortie. Le problème est que dans le répertoire de sortie, je suis propriétaire de tous les fichiers. Est-il possible de faire quelque chose avec ce processus, de sorte que les fichiers de sortie ont exactement les mêmes autorisations que les originaux ainsi que le propriétaire et le groupe.Java 6: Créer une copie modifiée du fichier en conservant la permission d'origine

Merci,

Alex

Répondre

1

Basé sur le fichier d'origine, vous pouvez savoir ce que les autorisations dont vous avez besoin. Pour le nouveau fichier, tripoter avec File.setReadable(boolean readable), setWriteable(), setExecutable() API pour définir la permission pour les nouveaux fichiers à être exactement le même que celui de votre fichier d'origine.

EDIT: REMARQUE. C'est pour Java> = Pour définir toutes les permanentes pour un fichier (semblable à chmod), passez à Files. Il y a cette méthode setPosixFilePermissions(..). Vous devez importer les 3 classes appropriées de java.nio.file.*

Je l'ai utilisé comme si ...

Set<PosixFilePermission> filePermission = new HashSet<PosixFilePermission>(); 

    // OWNER rwe --- --- 
    filePermission.add(PosixFilePermission.OWNER_READ); 
    filePermission.add(PosixFilePermission.OWNER_WRITE); 
    filePermission.add(PosixFilePermission.OWNER_EXECUTE); 

    // GROUP --- rwe --- 
    filePermission.add(PosixFilePermission.GROUP_READ); 
    filePermission.add(PosixFilePermission.GROUP_WRITE); 
    filePermission.add(PosixFilePermission.GROUP_EXECUTE); 

    // GLOBAL --- --- rwe 
    filePermission.add(PosixFilePermission.OTHERS_READ); 
    filePermission.add(PosixFilePermission.OTHERS_WRITE); 
    filePermission.add(PosixFilePermission.OTHERS_EXECUTE); 

    Files.setPosixFilePermissions(Paths.get("{PATH_TO_FILE}"), filePermission); 
+0

Je ne pense pas que cela fonctionnera. selon la documentation, setReadable est "Une méthode pratique pour définir l'autorisation de lecture du propriétaire pour ce chemin d'accès abstrait." Il ne gère pas les autorisations de groupe et autres. – Alex

+1

N'est-ce pas ce que j'ai dit? Vous avez besoin des 3 méthodes pour définir les autorisations, pas une seule. S'il vous plaît essayez-le. –

+0

Je ne suis pas sûr de vous avoir. 3 méthodes pour lire/écrire et exécuter? Qu'en est-il de la permission pour le groupe et les autres? Par exemple pour les droits d'exécution de la documentation: "Paramètres: exécutable - Si vrai, définit l'autorisation d'accès pour permettre les opérations d'exécution, si faux pour interdire l'exécution de operationsownerOnly - Si vrai, l'autorisation d'exécution s'applique uniquement à l'autorisation d'exécution du propriétaire. Si le système de fichiers sous-jacent ne peut pas distinguer l'autorisation d'exécution du propriétaire de celle des autres, alors l'autorisation s'appliquera à tout le monde, indépendamment de cette valeur. " – Alex