Как установить разрешение файла в Java

Как установить разрешение файла в Java

В Java права доступа к файлам очень специфичны для ОС: * nix, NTFS (windows) и FAT / FAT32, все имеют разные разрешения для файлов. Java поставляется с некоторыми общими разрешениями для работы с файлами.

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.

В системе * nix может потребоваться настроить дополнительные параметры для разрешения файла, например, установить разрешение 777 для файла или каталога, однако классы Java IO не имеют готового метода для этого, но вы можете использовать следующий грязный обходной путь:

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

Пример разрешения файла

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();
        }
    }
}