2013-05-28 1 views
0

Этот код отлично работает на компьютере A и не работает на компьютере B ... Я не понимаю Почему .. Ничего Исключения или что-то еще .... On Компьютер Создан файл журнала, на компьютере не был создан файл журнала B. У компьютеров A и B есть одна и та же Java-версия ... Есть ли у вас идеи?Java не может сохранить выходной поток в файл

String str = "cmd /C dir tools>1.log"; 
    try { 
     Runtime.getRuntime().exec(str); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

PS этот код прекрасно работает на обоих компьютерах

String str = "cmd /C dir tools"; 
+3

Вы должны использовать Java встроенного API для файлов. – SLaks

+1

Вы проверили разрешения – nidhin

+0

попробуйте выполнить команду, указанную строкой, но оставайтесь **/K ** –

ответ

1

Вы должны открыть выходной поток процесса, чтобы правильно сохранить вывод в файл.

Вы можете сделать это путем создания объекта процесса и экономии, что в файл:

Process p = Runtime.getRuntime().exec(str); 
InputStreamReader reader = p.getInputStream(); 
BufferedReader buffer = new BufferedReader(reader); 
String line = null; 
while ((line = buffer.readLine() != null) { 
    //write stuff to file here 
} 
+0

Я знаю об этом методе, и он отлично работает, но я не понимаю, почему мой метод не работает –

+0

Я считаю, что это обсуждалось ранее в SO, но я не могу найти статью. Вместо этого посмотрите здесь: http://www.javaworld.com/jw-12-2000/jw-1229-traps.html?page=4 Раздел 4.6 должен объяснить это – Farlan

0

Отправляясь на то, что сказал SLaks - это ваш лучший выбор, чтобы использовать встроенный API для файлов. Вот link для общего учебника

Использование этих API приведет к возникновению каких-либо странных проблем с окружающей средой с компьютеров A-B ... на C и т. Д.

+0

OK Я знаю об этом, но я не понимаю, почему мой метод не работает. Не могли бы вы объяснить, что в моем случае –