import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.PosixFileAttributeView;
import java.nio.file.attribute.PosixFilePermission;
import java.nio.file.attribute.PosixFilePermissions;
import java.util.Set;
import java.util.TreeSet;

public class BacaIzinPosix {
    public static void main(String[] args) throws IOException {
        Path berkas = Path.of("arsip.txt");
        Files.writeString(berkas, "isi arsip\n");

        // Atur dulu agar hasil tidak bergantung pada umask lingkungan.
        Files.setPosixFilePermissions(berkas,
                PosixFilePermissions.fromString("rw-r-----"));

        Set<PosixFilePermission> izin = Files.getPosixFilePermissions(berkas);
        System.out.println("rwx string   : " + PosixFilePermissions.toString(izin));
        System.out.println("terurut      : " + new TreeSet<>(izin));

        // View POSIX membaca izin sekaligus kepemilikan.
        PosixFileAttributeView tampilan =
                Files.getFileAttributeView(berkas, PosixFileAttributeView.class);
        System.out.println("nama view    : " + tampilan.name());
        System.out.println("izin via view: "
                + PosixFilePermissions.toString(tampilan.readAttributes().permissions()));

        Files.delete(berkas);
    }
}
