How to set the file permission in Java

In Java, file permissions are very OS specific: *nix , NTFS (windows) and FAT/FAT32, all have different kind of file permissions. Java comes with some generic file permission to deal with it.

Check if the file permission allow :

  1. file.canExecute(); – return true, file is executable; false is not.
  2. file.canWrite(); – return true, file is writable; false is not.
  3. file.canRead(); – return true, file is readable; false is not.

Set the file permission :

  1. file.setExecutable(boolean); – true, allow execute operations; false to disallow it.
  2. file.setReadable(boolean); – true, allow read operations; false to disallow it.
  3. file.setWritable(boolean); – true, allow write operations; false to disallow it.

In *nix system, you may need to configure more specifies about file permission, e.g set a 777 permission for a file or directory, however, Java IO classes do not have ready method for it, but you can use the following dirty workaround :


Runtime.getRuntime().exec("chmod 777 file");

File permission example


package com.mkyong.file;

import java.io.File;
import java.io.IOException;

public class FilePermissionExample 
{
    public static void main( String[] args )
    {	
    	try {
    		 
	      File file = new File("/mkyong/shellscript.sh");
	      
	      if(file.exists()){
	    	  System.out.println("Is Execute allow : " + file.canExecute());
		  System.out.println("Is Write allow : " + file.canWrite());
		  System.out.println("Is Read allow : " + file.canRead());
	      }
	         
	      file.setExecutable(false);
	      file.setReadable(false);
	      file.setWritable(false);
	      
	      System.out.println("Is Execute allow : " + file.canExecute());
	      System.out.println("Is Write allow : " + file.canWrite());
	      System.out.println("Is Read allow : " + file.canRead());
	      
	      if (file.createNewFile()){
	        System.out.println("File is created!");
	      }else{
	        System.out.println("File already exists.");
	      }
	      
    	} catch (IOException e) {
	      e.printStackTrace();
	    }
    }
}

Reference

  1. http://java.sun.com/javase/6/docs/api/java/io/File.html

9 comments on “How to set the file permission in Java

  1. hi sir r
    i need code in java to restrict copy,move,etc,,…….only read permission …just like locker
    pls suggest

    Reply
  2. I am just writing to make you know what a great discovery my wife’s girl gained using your site. She came to understand a lot of issues, with the inclusion of what it’s like to possess an amazing helping heart to have most people very easily fully understand certain very confusing things. You really surpassed our own desires. Thanks for giving those informative, safe, explanatory as well as unique tips about that topic to Tanya.

    Reply
  3. Hi,

    I want to set permissions as block to delete file but this methods are not enough for this.

    Thanks.

    Reply
  4. So, when i run this program I got the output as below:

    exec- false
    read – true
    write – true } – which I understand.

    but after setting all permissions to ‘false’ also, I got the same output.

    exec- false
    read – true
    write – true } – which I don’t understand.

    I am running the file on Windows OS. Can anyone please explain where I got wrong.

    Thanks much in advance!!

    Reply
    1. Returns:
      true if and only if the operation succeeded. The operation will fail if the user does not have permission to change the access permissions of this abstract pathname. If readable is false and the underlying file system does not implement a read permission, then the operation will fail.

      Reply
  5. Hi all

    How to copy files from server to client with out asking open/save.i just want transfer a file server to client. Please help me.

    Thanks In advance

    Reply

Leave a Comment

Your email address will not be published. Required fields are marked *