Создайте каталог с полномочиями записи для группы

Вообще говоря, реализации разрешается выполнять такие оптимизации, если они не влияют на наблюдаемые (функциональные) результаты программы. В случае printf() это будет означать, что если программа не использует возвращаемое значение и если нет %n преобразований, то реализации будет разрешено ничего не делать.

На практике мне неизвестно о какой-либо реализации в Linux, которая в настоящее время (начало 2019 г.) выполняет такую ​​оптимизацию - компиляторы и библиотеки, с которыми я знаком, отформатируют вывод и запишут результат на нулевое устройство, полагаясь на на ядро ​​", чтобы игнорировать это.

Возможно, вы захотите написать собственную функцию пересылки, если вам действительно нужно сэкономить на стоимости форматирования, когда вывод не используется - вам нужно вернуть void, и вам следует проверить строку формата для %n. (Вы можете использовать snprintf с буфером NULL и 0, если вам нужны эти побочные эффекты, но экономия вряд ли окупит вложенные усилия).

12
задан 19 February 2009 в 06:21
поделиться

3 ответа

Я подозреваю (если/до кто-то не отправляет ответ об обратном), что нет никакого способа сделать это в стандартной библиотеке Java, потому что полномочия группы POSIX (rwxrwxrwx вид, к которому Вы привыкли) не являются межплатформенными. Java 6 позволит Вам полномочия владельца набора или глобальные полномочия, но (насколько я могу сказать), не полномочия группы. Если действительно необходимо сделать это, попытайтесь использовать Runtime.exec("chmod g+w directory"), но это могла бы быть хорошая идея стилистически для обертывания его в метод как setGroupWritable().

2
ответ дан 2 December 2019 в 05:16
поделиться

Хорошо это не решение Java и определенно не портативное.

Так как Вы упоминаете, что Вы - Linux, вероятно, можно думать о проверке "umask" настроек, и установка его соответственно (чтобы создать каталоги с группой пишут полномочия), и затем запуск программы Java.

1
ответ дан 2 December 2019 в 05:16
поделиться

На java 6 существуют методы, которые позволяют Вам делать это, как setwriteable (). На предыдущих версиях Java необходимо будет получить доступ к командной строке, чтобы сделать команду chmod.

Документ класса файла Java 6 SE.

Править: Ой, я абсолютно неправ; мне не удалось заметить, что Вы хотели полномочия группы конкретно. Они, кажется, не устанавливаемы без Runtime.exec ().

@David: Вы правы.

Другая мысль: если у Вас есть много файлов для изменения, как насчет того, чтобы писать сценарий оболочки и назвать это от runtime.exec ()?

-1
ответ дан 2 December 2019 в 05:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: