在Java中,文件權限是非常具體的操作係統:* nix中,NTFS(Windows)及FAT/FAT32,都有著彆樣的文件權限。 Java提供了一些通用的文件權限來處理它。
檢查文件權限允許:
- file.canExecute(); – 返回true,文件是可執行的,false 則不是。
- file.canWrite(); – 返回true,文件是可寫的,false 則不是。
- file.canRead(); – 返回true,文件是可讀的,false 則不是。
設置文件權限:
- file.setExecutable(boolean); – true允許執行操作; false則是禁止它。
- file.setReadable(boolean); – true允許讀操作; false則是禁止它。
- file.setWritable(boolean); – true允許寫操作; false則是禁止它。
在* nix的係統中,可能需要配置有關文件權限的詳細指定,例如設置777權限的文件或目錄,但是,Java的IO類冇有現成的方法,但你可以使用下麵的解決方法:
Runtime.getRuntime().exec("chmod 777 file");
文件權限的例子
package com.yiibai.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(); } } }