Java 6:创建保留原始权限的文件的修改副本
Java 6: Create a modified copy of file perserving original permission
我正在从输入目录读取文件,修改其中的一些内容并将其写入输出目录。问题是在输出目录中,我是所有文件的所有者。有没有办法对这个过程做些什么,使得输出文件具有与原始文件完全相同的权限以及所有者和组。
谢谢,
亚历克斯
根据原始文件,您可以知道您需要什么权限。对于新文件,fiddle 和 File.setReadable(boolean readable)、setWriteable()
、setExecutable()
API 设置新文件的权限完全相同一个用于您的原始文件。
编辑:
笔记。这是 Java >= 7。
要设置文件的所有权限(类似于 chmod),请移至 Files. There's this method 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);
我正在从输入目录读取文件,修改其中的一些内容并将其写入输出目录。问题是在输出目录中,我是所有文件的所有者。有没有办法对这个过程做些什么,使得输出文件具有与原始文件完全相同的权限以及所有者和组。
谢谢,
亚历克斯
根据原始文件,您可以知道您需要什么权限。对于新文件,fiddle 和 File.setReadable(boolean readable)、setWriteable()
、setExecutable()
API 设置新文件的权限完全相同一个用于您的原始文件。
编辑:
笔记。这是 Java >= 7。
要设置文件的所有权限(类似于 chmod),请移至 Files. There's this method setPosixFilePermissions(..)。您需要从 java.nio.file.*
我是这样用的...
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);