Возможно, вы могли бы попробовать вызывать команды оболочки, используя ProcessBuilder. Приведенный ниже код показывает, как выполнить команду поиска из Java.
public static void main(final String[] args) throws IOException {
// if running linux:
runFind();
}
private static void runFind() throws IOException {
String[] commandList = {"/bin/sh", "-c", "find -iname \"*.txt\" | wc -l"};
ProcessBuilder processBuilder = new ProcessBuilder(commandList);
processBuilder.redirectOutput(Redirect.INHERIT); // Redirect output of process
Process process = processBuilder.start();
}
Код выше будет работать только на устройствах Unix. Единственным отличием для Windows будет ваш список команд:
String[] commandList = { "cmd.exe", "/C", "dir" };
Замените "dir" на то, что эквивалентно тому, что вы делаете в Windows.
Если вы хотите, чтобы ваша программа была совместима с различными операционными системами, вы можете создать ветку на основе ОС для обработки либо команды windows, либо команды unix, а затем использовать метод, который вы в настоящее время используете для File, если можете ' t по какой-то причине запустите процесс, как указано выше.
Если вы используете этот метод, вам придется перенаправить вывод процесса на то, что вы можете манипулировать в Java.