程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> java-Runtime.getRuntime().exec(is.readLine());遇到問題

java-Runtime.getRuntime().exec(is.readLine());遇到問題

編輯:編程綜合問答
Runtime.getRuntime().exec(is.readLine());遇到問題

程序沒報錯,執行到Runtime.getRuntime().exec(is.readLine());時沒看到任何效果,也不繼續執行接下來的代碼。is.readLine() 是"cmd /k start E://test.txt"。

public class Server {
public static void main(String [] args) {
try {
ServerSocket sersoc = null;
try {
sersoc = new ServerSocket(8399);
} catch (Exception e) {
// TODO: handle exception
}
Socket socket = null;
try {
socket = sersoc.accept();
} catch (Exception e) {
System.out.println("Error."+e);
}
String line = null;
BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter os = new PrintWriter(socket.getOutputStream());
BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));

        System.out.println(is.readLine());
        Runtime.getRuntime().exec(is.readLine());

        while(!line.equals("bye")){
            os.println(line);
            System.out.println("Server:" + line);
            System.out.println("Client:" + is.readLine());
            line = sin.readLine();
        }
        os.close();
        is.close();
        sersoc.close();
        socket.close();
    }catch (Exception e) {
        // TODO: handle exception
        System.out.println(e);
    }
}

}

最佳回答:


不能使用兩次readLine方法,因為第一次已經讀取了內容,下次exec的時候是處於等待輸入的狀態,他讀取不出來了,所以沒有執行,會一直等待輸入。解決辦法就是第一次讀取的時候將其轉換為變量,修改如下:

String command = is.readLine();
System.out.println(command);
Runtime.getRuntime().exec(command);

修改為上面的即可執行操作了,前提是你的command已經傳過來了啊。

你這個代碼只是server端的,看不到你的client端是怎麼寫的,因此需要你確保能夠讀取到你client端輸入的命令。

另外你的代碼中,line直接賦值了null,是不對的,即使你執行了命令,在下面的while判斷中也會報空指針的,這一行代碼:

while(!line.equals("bye")) 

將line初始化修改一下。

此外,不建議使用BufferedReader方法來讀取client端傳送的內容,因為你要在client中輸入命令的話,必須手動加上

\r\n 

否則server端讀取不到你輸入的命令,readLine是以換行符為讀取結束的。你可以參考下這個裡面介紹的讀寫方法。http://www.cnblogs.com/xignzou/p/3202346.html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved