0

以下のように、パス内のすべてのディレクトリにアクセス許可を設定するために NIO を使用しています。私は 777 のアクセス許可を与えようとしていますが、「w」の部分が適用されていません...何が問題なのですか?

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.FileAttribute;
import java.nio.file.attribute.PosixFilePermission;
import java.nio.file.attribute.PosixFilePermissions;
import java.util.Set;

public class permissionTest {

    public static void main(String [] args) throws IOException{

        Path dirPath = Paths.get("./part1/part2/part3");


        Set<PosixFilePermission> permissions = PosixFilePermissions.fromString("rwxrwxrwx");
        System.out.print(permissions.toString() + ' ');

        FileAttribute<Set<PosixFilePermission>> fileAttributes = 

                PosixFilePermissions.asFileAttribute(permissions);

        Files.createDirectories(dirPath, fileAttributes);

    }

}

$ ls -ld part1/
drwxr-xr-x 3 * *4096 Oct 30 02:48 part1/
4

1 に答える 1

2

これは、umask が適用されているためです。

シェルでこれを入力してみてください:

umask 0

次に、プログラムを再実行します (または、コマンド ラインから IDE を起動してコードを実行します)。umask 027また、これを行うと、作成したディレクトリのパーミッションが 750 になることも意味します。

残念ながら、Java自体でプロセスのumaskを変更することはできません(これはプロセスごとであり、継承されるため)...


「絶対」ファイル許可を設定するこの方法があることに注意してください。

于 2014-10-30T09:56:10.360 に答える