I am reading files from an input directory, modifying some of their content and writing it to the output directory. The problem is that in the output directory, I am owner of all files. Is there a way to do something with this process, such that the output files have exactly same permissions as originals as well as owner and group.
Thank you,
Alex
Based on the original file, you can know what permissions you need. For the new file, fiddle around with File.setReadable(boolean readable), setWriteable()
, setExecutable()
API's to set the permission for the new files to be the exact same as the one for your original file.
EDIT:
NOTE. This is for Java >= 7.
To set all perms for a file (akin to chmod), move over to Files. There's this method setPosixFilePermissions(..). You will need to import the 3 relevant classes from java.nio.file.*
I had used it like so...
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);