Как получить разрешение на файл с помощью 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;
}