Comment définir l’autorisation de fichier en Java

Comment définir l'autorisation de fichier en Java

En Java, les autorisations de fichiers sont très spécifiques au système d'exploitation: * nix, NTFS (windows) et FAT / FAT32, tous ont différents types d'autorisations de fichiers. Java est livré avec une autorisation de fichier générique pour y faire face.

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.

Dans le système * nix, vous devrez peut-être configurer plus de détails sur l'autorisation de fichier, par exemple définir une autorisation 777 pour un fichier ou un répertoire, cependant, les classes Java IO n'ont pas de méthode prête pour cela, mais vous pouvez utiliser la solution de contournement suivante:

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

Exemple d'autorisation de fichier

package com.example.file;

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

public class FilePermissionExample
{
    public static void main( String[] args )
    {
        try {

          File file = new File("/example/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();
        }
    }
}