我正在从输入目录中读取文件,修改它们的某些内容并将其写入输出目录。问题是在输出目录中,我是所有文件的所有者。有没有办法执行此过程,以便输出文件具有与原始文件以及所有者和组完全相同的权限。
谢谢,
亚历克斯
最佳答案
根据原始文件,您可以知道所需的权限。对于新文件,请使用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);