Java 是一種跨平臺的編程語言,可以用于開發本地應用程序和 Web 應用程序。在開發中,我們可能需要調用本地進程或遠程進程來執行一些操作。Java 提供了調用本地進程和遠程進程的 API。下面分別介紹這兩種方法。
調用本地進程:
try { Process p = Runtime.getRuntime().exec("cmd /c dir"); BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); } catch (IOException e) { e.printStackTrace(); }
Java 通過 Runtime.getRuntime().exec() 方法調用本地進程,可以執行任何系統命令。上面的代碼調用了 Windows 系統的 dir 命令,輸出當前目錄中的文件列表。
調用遠程進程:
try { String host = "192.168.0.2"; String user = "username"; String password = "password"; JSch jsch = new JSch(); Session session = jsch.getSession(user, host, 22); session.setPassword(password); session.setConfig("StrictHostKeyChecking", "no"); session.connect(); ChannelExec channel = (ChannelExec) session.openChannel("exec"); channel.setCommand("ls -l"); BufferedReader reader = new BufferedReader(new InputStreamReader(channel.getInputStream())); channel.connect(); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); channel.disconnect(); session.disconnect(); } catch (JSchException | IOException e) { e.printStackTrace(); }
Java 遠程調用需要依賴第三方庫,如上面示例代碼所使用的 JSch 庫,我們也可以使用其他庫,如 Apache 的 SSHD 庫。上面的代碼通過 SSH 協議連接到遠程服務器,并執行 ls -l 命令,輸出當前目錄中的文件列表。