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 :
- file.canExecute(); – return true, file is executable; false is not.
- file.canWrite(); – return true, file is writable; false is not.
- file.canRead(); – return true, file is readable; false is not.
Set the file permission :
- file.setExecutable(boolean); – true, allow execute operations; false to disallow it.
- file.setReadable(boolean); – true, allow read operations; false to disallow it.
- 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
FilePermissionExample.java
package com.favtuts.io.file; import java.io.File; import java.io.IOException; public class FilePermissionExample { public static void main(String[] args) { try { File file = new File("/home/tvt/workspace/favtuts/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(true); 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(); } } }
Is Execute allow : false
Is Write allow : true
Is Read allow : true
Is Execute allow : true
Is Write allow : false
Is Read allow : false
File already exists.
Download Source Code
$ git clone https://github.com/favtuts/java-core-tutorials-examples
$ cd java-io/file