How to set File Permissions in Java Easily using Java 7 PosixFilePermission


Java File class can set the record authorizations however it's not flexible. The greatest downside is that you can isolate record authorizations into two arrangement of clients – proprietor and every other person as it were. You can't set diverse record authorizations for gathering and other users.

Java 7 has presented PosixFilePermission Enum and java.nio.file.Files incorporates a technique setPosixFilePermissions(Path way, Set<PosixFilePermission> perms) that can be utilized to set record authorizations easily.

Here is a basic program that obviously indicates why PosixFilePermission is better.

FilePermissions.java


package com.journaldev.files;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.attribute.PosixFilePermission;
import java.util.HashSet;
import java.util.Set;

public class FilePermissions {

    /**
     * File Permissions Java Example using File and PosixFilePermission
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        File file = new File("/Users/pankaj/temp.txt");
        
        //set application user permissions to 455
        file.setExecutable(false);
        file.setReadable(false);
        file.setWritable(true);
        
        //change permission to 777 for all the users
        //no option for group and others
        file.setExecutable(true, false);
        file.setReadable(true, false);
        file.setWritable(true, false);
        
        //using PosixFilePermission to set file permissions 777
        Set<PosixFilePermission> perms = new HashSet<PosixFilePermission>();
        //add owners permission
        perms.add(PosixFilePermission.OWNER_READ);
        perms.add(PosixFilePermission.OWNER_WRITE);
        perms.add(PosixFilePermission.OWNER_EXECUTE);
        //add group permissions
        perms.add(PosixFilePermission.GROUP_READ);
        perms.add(PosixFilePermission.GROUP_WRITE);
        perms.add(PosixFilePermission.GROUP_EXECUTE);
        //add others permissions
        perms.add(PosixFilePermission.OTHERS_READ);
        perms.add(PosixFilePermission.OTHERS_WRITE);
        perms.add(PosixFilePermission.OTHERS_EXECUTE);
        
        Files.setPosixFilePermissions(Paths.get("/Users/pankaj/run.sh"), perms);
    }

}

From above model, unmistakably PosixFilePermission gives more alternatives and code is progressively discernible. On the off chance that you are utilizing Java 7, you should utilize it for setting record authorizations in java.






© Journaldev Python 3 tutorial spring tutorial