2016-03-21 4 views
0

Я читаю файлы из каталога ввода, изменяя часть их содержимого и записывая его в выходной каталог. Проблема в том, что в выходном каталоге я являюсь владельцем всех файлов. Есть ли способ сделать что-то с этим процессом, так что выходные файлы имеют точно такие же разрешения, что и оригиналы, а также владелец и группа.Java 6: Создайте измененную копию файла, сохраняющего исходное разрешение

Спасибо,

Alex

ответ

1

на основе исходного файла, вы можете знать, какие разрешения вам нужно. Для нового файла скрутитесь с File.setReadable(boolean readable), setWriteable(), setExecutable() API, чтобы установить разрешение для новых файлов таким же, как и для исходного файла.

EDIT: ПРИМЕЧАНИЕ. Это для Java> = 7. Чтобы установить все perms для файла (сродни chmod), перейдите к Files. Есть этот метод setPosixFilePermissions(..). Вам нужно будет импортировать 3 соответствующие классы от 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); 
+0

Я не думаю, что это будет работать. согласно документации setReadable - это «Метод удобства для установки разрешения на чтение владельца для этого абстрактного пути». Он не обрабатывает групповые и другие разрешения. – Alex

+1

Разве это не то, что я сказал? Вам нужны все 3 метода для установки разрешений, а не только один. Пожалуйста, попробуйте. –

+0

Я не уверен, что я к тебе. 3 метода чтения/записи и выполнения? как насчет разрешения для группы и других? Например, для выполнения прав из документации: «Параметры: исполняемый - если true, устанавливает разрешения доступа, чтобы разрешить выполнение операций, если false, чтобы запретить выполнение операцийownerOnly-If true, разрешение выполнения применяется только к разрешению на выполнение владельца, в противном случае оно применяется для всех. Если базовая файловая система не может отличить разрешение на исполнение владельца от прав других, тогда разрешение будет применяться ко всем, независимо от этого значения ». – Alex