我正在从输入目录中读取文件,修改它们的某些内容并将其写入输出目录。问题是在输出目录中,我是所有文件的所有者。有没有办法执行此过程,以便输出文件具有与原始文件以及所有者和组完全相同的权限。

谢谢,

亚历克斯

最佳答案

根据原始文件,您可以知道所需的权限。对于新文件,请使用File.setReadable(boolean readable)setWriteable()setExecutable() API来将新文件的权限设置为与原始文件的权限完全相同。

编辑:
注意。这适用于Java> = 7。
要设置文件的所有权限(类似于chmod),请移至Files。有这种方法setPosixFilePermissions(..)。您将需要从java.nio.file.*导入3个相关的类

我曾经这样用过...

    Set<PosixFilePermission> filePermission = new HashSet<PosixFilePermission>();

    // OWNER rwe --- ---
    filePermission.add(PosixFilePermission.OWNER_READ);
    filePermission.add(PosixFilePermission.OWNER_WRITE);
    filePermission.add(PosixFilePermission.OWNER_EXECUTE);

    // GROUP --- rwe ---
    filePermission.add(PosixFilePermission.GROUP_READ);
    filePermission.add(PosixFilePermission.GROUP_WRITE);
    filePermission.add(PosixFilePermission.GROUP_EXECUTE);

    // GLOBAL --- --- rwe
    filePermission.add(PosixFilePermission.OTHERS_READ);
    filePermission.add(PosixFilePermission.OTHERS_WRITE);
    filePermission.add(PosixFilePermission.OTHERS_EXECUTE);

    Files.setPosixFilePermissions(Paths.get("{PATH_TO_FILE}"), filePermission);

10-07 18:59
查看更多