Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ca.midnight.jnet.client;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStreamWriter;
- import java.util.Scanner;
- public class CommandLine extends Thread {
- private ProcessBuilder builder;
- private Process process;
- public CommandLine() {
- builder = new ProcessBuilder("cmd.exe");
- }
- @Override
- public void start() {
- if (process != null) {
- process.destroy();
- process = null;
- }
- try {
- process = builder.start();
- ResponseListener listener = new ResponseListener() {
- @Override
- public void handle(String line) {
- System.out.println(line);
- }
- };
- StreamRedirect redirectInput = new StreamRedirect(process.getInputStream());
- StreamRedirect redirectErr = new StreamRedirect(process.getErrorStream());
- redirectInput.setResponseListener(listener);
- redirectErr.setResponseListener(listener);
- redirectInput.start();
- redirectErr.start();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public void writeCommand(String command) {
- synchronized (process) {
- final BufferedWriter bf = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
- try {
- bf.write(command);
- bf.newLine();
- bf.flush();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- class StreamRedirect extends Thread {
- InputStream is;
- ResponseListener listener;
- StreamRedirect(InputStream is) {
- this.is = is;
- }
- public void setResponseListener(ResponseListener listener) {
- this.listener = listener;
- }
- public void run() {
- try (BufferedReader ir = new BufferedReader(new InputStreamReader(is))) {
- ir.lines().forEach(l -> {
- if(listener != null)
- listener.handle(l);
- });
- } catch (IOException e1) {
- e1.printStackTrace();
- }
- }
- }
- interface ResponseListener {
- void handle(String line);
- }
- public static void main(String[] args) {
- CommandLine line = new CommandLine();
- line.start();
- Scanner scanner = new Scanner(System.in);
- do {
- String input = scanner.nextLine();
- line.writeCommand(input);
- } while (scanner.hasNextLine());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement