In Java, I’m dynamically creating a set of files and I’d like to change the file permissions on these files on a linux/unix file system. I’d like to be able to execute the Java equivalent of chmod. Is that possible Java 5? If so, how?
I know in Java 6 the File object has setReadable()/setWritable() methods. I also know I could make a system call to do this, but I’d like to avoid that if possible.
Full control over file attributes is available in Java 7, as part of the ‘new’ New IO facility (NIO.2). For example, POSIX permissions can be set on an existing file with
setPosixFilePermissions(), or atomically at file creation with methods likecreateFile()ornewByteChannel().You can create a set of permissions using
EnumSet.of(), but the helper methodPosixFilePermissions.fromString()will uses a conventional format that will be more readable to many developers. For APIs that accept aFileAttribute, you can wrap the set of permissions with withPosixFilePermissions.asFileAttribute().In earlier versions of Java, using native code of your own, or
exec-ing command-line utilities are common approaches.