1

我想为 Windows 中的命令行创建类似遥控器的东西。

为此,我正在使用扫描仪,但是...

问题是,当我使用 nextLine() 从流中读取整行时,提示将丢失(因为打印的是,但不在一行中)-当我使用 next() 读取下一个单词时,该行缺少休息,您将失去概述。然而,一些信息甚至丢失了。

package com;

import java.io.IOException;
import java.util.Scanner;

public class StdinCmd extends Thread {
    public void run() {
        try {
            execute();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public void execute() throws IOException {
        Scanner reader = new Scanner(MainClient.getProcess().getInputStream()); // <- getting the stream
        StdoutSocket stdoutSocket = new StdoutSocket();
        while (true) {
            while (reader.hasNext()) {
                stdoutSocket.executeNext(reader.next()); // <- send it to the socket (the controller). This is what will be displayed at the end.
            }
        }
    }
}

我附上了它应该是什么样子的屏幕截图,以及它最后的样子:

http://www.mediafire.com/?jma31ezg8ansfal

我希望你能帮助我,我给了你足够的信息!

4

2 回答 2

1

不要使用Scanneror BufferedReader,而是直接从InputStream...

InputStream is = null;
try {
    is = MainClient.getProcess().getInputStream();
    int in = -1;
    while ((in = is.read()) != -1) {
        System.out.print(((char)in));
    }
} catch (IOException exp) {
    exp.printStackTrace();
} finally {
    try {
        is.close();
    } catch (Exception exp) {
    }
}
于 2013-09-15T08:33:46.633 回答
1

就个人而言,我真的不太喜欢扫描仪。如果您想从用户那里读取输入行并通过套接字发送它。那么谁不只是将 BufferedReader 与 System.in 一起使用?读取一行并通过套接字发送。

BufferedReader br = new BUfferedReader(new InputStreamReader(System.in));
String line = null;
while((line = br.readLine()) != null){
    OutSocket.send(line); // or how you send it..
}

~Foorack

于 2013-09-15T08:35:57.450 回答