Отображение сообщения об ошибке DOS с использованием Rhino/JavaScript/Java
Я пытаюсь запустить команду DIR с помощью программы, похожей на язык Rhino (программа использует Java/JavaScript).
Если есть какая-либо синтаксическая ошибка или любая другая ошибка, я хочу распечатать сообщение об ошибке, используя функцию ниже:
function CatchDOSError()
{
var ErrorMSG = new java.io.BufferedReader(new java.io.InputStreamReader(java.lang.Runtime.getRuntime().exec("cmd /c dir \\C:\Test\Data /s /b /a-D > c:\Test\fileRunDIR.txt").getErrorStream()));
while (( ErrorMSG.readLine()) != null)
{
println(ErrorMSG);
}
ErrorMSG.close();
}
Если я запускаю эту функцию, все, что я получаю в качестве вывода в консоли, это: "java.io.BufferedReader@71fbs019".
Если я запускаю команду DOS из CMD вручную, появляется сообщение об ошибке "Система не может найти путь". Это сообщение об ошибке, которое я хочу, чтобы оно отображалось с помощью функции выше. Не уверен, есть ли проблемы с конверсией или что-то не так с моей функцией.
Любая помощь приветствуется, спасибо.
1 ответ
Когда вы делаете
while (( ErrorMSG.readLine()) != null) {
println(ErrorMSG);
}
Вы отбрасываете строку после проверки, что она не равна нулю, и затем печатаете сам Reader (который не переопределяет toString()
а не линия). Я думаю, что вы хотели,
var line = "";
while (( line = ErrorMSG.readLine()) != null) {
println(line);
}