Melaksanakan Perintah Prompt Perintah Menggunakan Java
Percubaan untuk melaksanakan arahan daripada command prompt melalui Java menggunakan kod berikut:
String command = "cmd /c start cmd.exe"; Process child = Runtime.getRuntime().exec(command); OutputStream out = child.getOutputStream(); out.write("cd C:/ /r/n".getBytes()); out.flush(); out.write("dir /r/n".getBytes()); out.close();
mungkin tidak menghasilkan hasil yang diingini, membiarkan command prompt terbuka tanpa melaksanakan yang ditentukan arahan.
Untuk menangani perkara ini, pertimbangkan pendekatan berikut:
String[] command = {"cmd"}; Process p = Runtime.getRuntime().exec(command); new Thread(new SyncPipe(p.getErrorStream(), System.err)).start(); new Thread(new SyncPipe(p.getInputStream(), System.out)).start(); PrintWriter stdin = new PrintWriter(p.getOutputStream()); stdin.println("dir c:\ /A /Q"); stdin.close(); int returnCode = p.waitFor(); System.out.println("Return code = " + returnCode);
Selain itu, tentukan kelas SyncPipe untuk memudahkan pemindahan data:
class SyncPipe implements Runnable { public SyncPipe(InputStream istrm, OutputStream ostrm) { istrm_ = istrm; ostrm_ = ostrm; } public void run() { try { final byte[] buffer = new byte[1024]; for (int length = 0; (length = istrm_.read(buffer)) != -1; ) { ostrm_.write(buffer, 0, length); } } catch (Exception e) { e.printStackTrace(); } } private final OutputStream ostrm_; private final InputStream istrm_; }
Kaedah ini memberikan keupayaan untuk merangkai berbilang arahan dan melaksanakannya dalam satu proses Windows. Tambahan pula, ia menyediakan maklum balas masa nyata dan mekanisme pengendalian ralat.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Berbilang Perintah Prompt Berbilang Menggunakan Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!