К сожалению, Java мало что дает для свойств системных файлов, потому что это нарушило бы золотое правило java «пиши один раз, беги везде».
Действительно, когда вы пишете, что хотите предоставить 777 доступ к файлу, это, очевидно, означает, что вы работаете под Unix. Но что бы означал такой запрос под Windows, например?
Так что неудивительно, что для решения конкретных тем ОС вам придется использовать определенные функции. Это цена, которую нужно платить при использовании языка, который заявляет (по веским причинам), что он «независим от платформы»
Более безопасный способ - использовать библиотеку JNI, которая реализует именно то, что вы хотите.
Простой, но грязный и опасный способ - использовать Runtime.getRuntime (). Exec ("chmod 777 myFile").
Почему опасно? На самом деле, что происходит, когда кто-то называет такого exec ("бла-бла")?
Unix-процесс, запускающий форки вашей java-программы; затем «дублированный» процесс исполняет оболочку (ksh? csh? bash? это зависит от вашей конфигурации unix), которая пытается понять и выполнить ваше предложение «бла-бла».
Если ваш jvm на самом деле использует 500 МБ, разветвленный процесс при запуске будет иметь такой же размер ...
Тогда оболочка будет запускаться с тем же «контекстом оболочки», что и процесс java, то есть с тем же PATH, псевдонимами и так далее. Даже "chmod" мог быть псевдонимом, поэтому было бы лучше назвать полный путь для chmod (/ bin / chmod, / usr / bin / chmod ... это зависит от разновидности unix ...).
Во время выполнения оболочки ваша java-программа зависает, и у вас нет возможности ее разморозить, если по какой-либо причине оболочка зависла.
И, наконец, он даже не уверен, что владелец unix java-программы обладает достаточными правами для изменения такой информации в файле (ему может быть разрешено создавать файл, но не изменять, например, права на уровне пользователя).
Может быть, вы пытаетесь решить на уровне Java проблему, которую следует решать на уровне ОС?