Advertisement
Guest User

Untitled

a guest
Nov 20th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.24 KB | None | 0 0
  1. package ca.midnight.jnet.client;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.BufferedWriter;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.io.InputStreamReader;
  8. import java.io.OutputStreamWriter;
  9. import java.util.Scanner;
  10.  
  11. public class CommandLine extends Thread {
  12.  
  13.     private ProcessBuilder builder;
  14.     private Process process;
  15.  
  16.     public CommandLine() {
  17.         builder = new ProcessBuilder("cmd.exe");
  18.     }
  19.  
  20.     @Override
  21.     public void start() {
  22.         if (process != null) {
  23.             process.destroy();
  24.             process = null;
  25.         }
  26.         try {
  27.             process = builder.start();
  28.             ResponseListener listener = new ResponseListener() {
  29.                 @Override
  30.                 public void handle(String line) {
  31.                     System.out.println(line);
  32.                 }
  33.             };
  34.             StreamRedirect redirectInput = new StreamRedirect(process.getInputStream());
  35.             StreamRedirect redirectErr = new StreamRedirect(process.getErrorStream());
  36.             redirectInput.setResponseListener(listener);
  37.             redirectErr.setResponseListener(listener);
  38.             redirectInput.start();
  39.             redirectErr.start();
  40.         } catch (IOException e) {
  41.             e.printStackTrace();
  42.         }
  43.     }
  44.  
  45.     public void writeCommand(String command) {
  46.         synchronized (process) {
  47.             final BufferedWriter bf = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
  48.             try {
  49.                 bf.write(command);
  50.                 bf.newLine();
  51.                 bf.flush();
  52.             } catch (IOException e) {
  53.                 e.printStackTrace();
  54.             }
  55.         }
  56.     }
  57.  
  58.     class StreamRedirect extends Thread {
  59.  
  60.         InputStream is;
  61.         ResponseListener listener;
  62.  
  63.         StreamRedirect(InputStream is) {
  64.             this.is = is;
  65.         }
  66.        
  67.         public void setResponseListener(ResponseListener listener) {
  68.             this.listener = listener;
  69.         }
  70.  
  71.         public void run() {
  72.             try (BufferedReader ir = new BufferedReader(new InputStreamReader(is))) {
  73.                 ir.lines().forEach(l -> {
  74.                     if(listener != null)
  75.                         listener.handle(l);
  76.                 });
  77.             } catch (IOException e1) {
  78.                 e1.printStackTrace();
  79.             }
  80.         }
  81.     }
  82.  
  83.     interface ResponseListener {
  84.         void handle(String line);
  85.     }
  86.  
  87.     public static void main(String[] args) {
  88.         CommandLine line = new CommandLine();
  89.         line.start();
  90.         Scanner scanner = new Scanner(System.in);
  91.         do {
  92.             String input = scanner.nextLine();
  93.             line.writeCommand(input);
  94.         } while (scanner.hasNextLine());
  95.     }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement