Подтвердить что ты не робот

Есть ли библиотека Java функций Unix?

Я ищу библиотеку Java для взаимодействия со стандартными функциями Unix, т.е. stat(), getpwuid(), readlink().

Это существовало и называлось javaunix. Он был выпущен еще в 2000 году. См. Это объявление . Но страница проекта теперь отсутствует.

Есть ли какая-либо современная замена для этих типов функций в Java сегодня? Можно сделать системный вызов /bin/ls -l и проанализировать вывод или написать собственный JNI-метод, но эти подходы более эффективны, чем просто использовать старую библиотеку javaunix.

Уточнение -. Чтобы узнать владельца файла, из программы на C, он должен вызвать stat(), который дает UID владельца, а затем использовать getpwuid(), чтобы получить имя учетной записи из UID. В Java это можно сделать с помощью настраиваемого метода JNI или библиотеки javaunix, которая использует JNI.

4b9b3361

Ответ 1

Мне известно о двух интересных проектах:

Лично мне очень нравится JNA. Взгляните на мой пример, сопоставив link(2):

import com.sun.jna.Library;
import com.sun.jna.Native;

class Link {

    private static final C c =
        (C) Native.loadLibrary("c", C.class);

    private static interface C extends Library {

        /** see man 2 link */
        public int link(String oldpath, String newpath);
    }

    @Override
    protected void hardLink(String from, String to) {
        c.link(to, from);
    }
}

Ответ 2

В настоящее время JNA-POSIX застаивается, насколько мне известно.

Разработчики продолжали создавать JNR-POSIX

Ответ 3

Я был бы удивлен, увидев его, учитывая, что он почти обязательно будет специфичным для платформы. Java - не лучший инструмент для этой работы. Но вы, безусловно, можете подключиться через JNI или обратиться к внешним программам, если настаиваете. Или, возможно, посмотрите на Groovy, который, как я понимаю, достаточно хорош для сценариев оболочки, хотя у меня нет личного опыта с ним.

Ответ 4

Я не знаю никакой библиотеки с функциями Unix.

для большинства функций, я считаю, вы можете использовать стандартный Java API, чтобы делать то, что хотите. например, нет необходимости использовать команду ls для чтения файлов какой-либо директории. но в некоторых конкретных случаях, таких как stat (чтобы узнать, является ли файл ссылкой), вы должны использовать JNI.