Java 6:根据原始权限创建文件的修改副本



我正在从输入目录中读取文件,修改其中的一些内容并将其写入输出目录。问题是在输出目录中,我是所有文件的所有者。是否有一种方法可以处理这个过程,使输出文件与原始文件以及所有者和组具有完全相同的权限。

谢谢你,

Alex

基于原始文件,您可以知道您需要什么权限。对于新文件,使用file.setReadable(布尔可读)、setWriteable()setExecutable() API将新文件的权限设置为与原始文件的权限完全相同。

编辑:注意。这适用于Java>=7。要设置文件的所有排列(类似于chmod),请移到"文件"。有一个方法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);

最新更新