Runtime objRuntime = Runtime.getRuntime();
String strBackupString = "mysqldump -u " + userName + " -p" + password + " " + dbName;
Process objProcess = objRuntime.exec(strBackupString);
Это используется для резервного копирования базы данных. Но что точно происходит? Кто-либо может заставить меня объяснить, из чего цель Runtime
и Process
класс?
Этот класс используется для действия, как будто мы вводим команду от командной строки? Затем, чему я должен передать objRuntime.exec()
если я хочу открыть блокнот? И команда выполняется, как только мы называем исполнительный метод? Если да, то, что делает цель Process
служить здесь? Я действительно не могу понять эти два класса. Заставьте меня понять. Заранее спасибо :)
При возникновении сомнений всегда обращайтесь к API:
Методы
ProcessBuilder.start()
иRuntime.exec
создают собственный процесс и возвращают экземпляр подклассаProcess
, который можно использовать для управления процессом и получения информации о нем. КлассProcess
предоставляет методы для выполнения ввода из процесса, выполнения вывода в процесс, ожидания завершения процесса, проверки статуса выхода из процесса и уничтожения (kill) процесса.Выполняет указанную системную команду в отдельном процессе.
Так что да, Runtime.exec
может выполнить команду, которую вы обычно набираете в системной командной строке. Это вряд ли можно назвать платформонезависимым решением, но иногда оно необходимо. Возвращаемый объект Process
позволяет вам управлять им, убивать его и, что иногда важно, перенаправлять его стандартные потоки ввода/вывода/ошибок.
Как уже говорилось, это зависит от платформы, но этот фрагмент работает на моей машине Windows; он запускает notepad.exe
и пытается открыть test.txt
из текущего рабочего каталога. Затем программа ждет завершения процесса и печатает его код выхода.
public class ExecExample {
public static void main(String[] args) throws Exception {
Process p = Runtime.getRuntime().exec("notepad.exe test.txt");
System.out.println("Waiting for notepad to exit...");
System.out.println("Exited with code " + p.waitFor());
}
}
Это объектно-ориентированное представление процесса. Подобно классу Thread, который представляет поток.