Я написал код Java для выполнения Vowpal Wabbit следующим образом:Vowpal Wabbit выполнить без записи на диск
System.out.println("Executing command " + command);
final Runtime r = Runtime.getRuntime();
final Process p = r.exec(command);
System.out.println("waiting for the process");
try (final BufferedReader b = new BufferedReader(new InputStreamReader(p.getInputStream()))) {
String line;
while ((line = b.readLine()) != null) {
final T lineResult = textParser.parseLine(line);
parserResultCombiner.addToCombiner(lineResult);
}
}
p.waitFor();
System.out.println("done");
}
где команда
оч.сл. -d input.txt --loss_function = logistic -f model.vw
Недостатком этого является то, что он требует записи на диск. После некоторого поиска я узнал, что wowpal wabbit поддерживает чтение данных со стандартного ввода example in R
Я не мог найти никакого примера для этого в Java 1.8. Может ли кто-нибудь поделиться со мной?
посмотреть [здесь] (http://stackoverflow.com/questions/10407308/redirec t-stdin-and-stdout-in-java), он показывает, как взаимодействовать с stdin и stdout внешней программы от Java. Этот пост также указывает на [этот вопрос] (http://stackoverflow.com/questions/3643939/java-process-with-input-output-stream/3644288#3644288), также стоит прочитать. – fvu
Поскольку ваш код уже читает из основного вывода внешнего процесса, не должно быть так сложно понять, как писать его на stdin. Просто используйте 'p.getOutputStream()' вместо 'p.getInputStream()' и напишите ему ... – Holger