2013-12-25 3 views
1

Это мой код для запуска java-файла в другом приложении Java, но я не знаю, что делать, если программа принимает только bufferedinputs ??дать буферизованный ввод runtime exec в java

try { 

Runtime rt = Runtime.getRuntime(); 

// compile the java file 
Process pr = rt.exec("javac Main.java"); 
pr.waitFor(); 

// run the java file 
pr = rt.exec("java Main " + inputs.toString()); // using this i can give command line arguments 
pr.waitFor(); 
} 

Это мой код, я могу привести аргументы командной строки во время выполнения, но что, если я хочу дать bufferedinput программе?

Заранее спасибо

ответ

2

Вы состояние:

Это мой код для запуска Java-файл в другом приложении Java, но я не knoow что делать, если программа занимает всего bufferedinputs ??

Для присоединения к другим процессам входных и выходных потоков, посмотрите на API for the Process class, где вы сможете найти и использовать методы getErrorStream(), getInputStream() и getOutputStream(). Затем вы можете обернуть свои потоки ввода и вывода и ошибок в их соответствующие буферизованные потоки.

Однако обратите внимание, что вы должны быть осторожны распространенных ошибок, которые хорошо объясняются в слегка от статьи, When Runtime Exec Won't

Сказав это, вы гораздо лучше, используя классы themsevels Java, а не запустить его в другой JVM. Есть ли причина, по которой вы не можете этого сделать? И что вы подразумеваете под «буферизованным» вводом?

+0

Он имеет в виду System.in буферизованным вводом –

+0

@NewOverHere: это все еще не имеет никакого смысла. Как другое приложение знает или имеет представление о том, что другое приложение использует буферизацию для отправки ввода или нет? Все, что он знает, это то, что он получает вход. –

Смежные вопросы