Как получить разрешение на файл с помощью roottools

Я хочу получить разрешения для файлов Linux без разбора ls -l. Поскольку я буду использовать RootTools, я вижу, что у него есть класс Permissions, но как мне получить данные о разрешениях File для этого объекта?

2 ответа

Решение

RootToolsInternalMethods имеет метод getPermissions(String), но доступ к ним можно получить только в классе RootTools

Из источника RootTools

private static final RootToolsInternalMethods getInternals() {
    if (rim == null) {
        RootToolsInternalMethods.getInstance();
        return rim;
    } else {
        return rim;
    }
}

Похоже, мне нужно изменить исходный код RootTools и получить разрешения из вывода ls -l

getInternals().getPermissions("ls -l output line");

Если вы не можете изменить источник, используйте отражение:

private Permissions RootToolsInternalMethods_getPermissions(String line)
{
    try
    {
        RootTools rootTools = new RootTools();
        Method method = rootTools.getClass().getDeclaredMethod("getInternals");
        method.setAccessible(true);
        RootToolsInternalMethods rootToolsInternalMethods = (RootToolsInternalMethods)method.invoke(rootTools);
        return rootToolsInternalMethods.getPermissions(line);
    }
    catch (Exception ignore) {}

    return null;
}
Другие вопросы по тегам