因此,我想这将是一个简单的1或2行代码,以便我将OutputStream转换为字符串,以便我可以用自己的逻辑更好地检查它。
所以下面的代码是我目前正在使用的代码。如果我只想将输出写到控制台,就可以了。但是,我想将该输出存储为字符串。public static void main(String[] args) throws IOException {
Process p;
try {
p = Runtime.getRuntime().exec("cmd");
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("cd C:/Local Apps/xxx/xxx/xxxx/eclipse");
stdin.println("lscm login -r https://xxxx.xxxx.xxxx.xxxx:9443/ccm -n xxxx.xxxx.xxx.xxxx -u itsme -P gr^34dbtfgt7y");
stdin.close();
p.waitFor();
} catch (Exception e) {
e.printStackTrace();
}
}
}
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_;
}
我想从中获取数据:
ostrm_.write(buffer, 0, length);
我已经尝试过在Google上找到的各种方法:
String string = new String(ostrm_.toString());
System.out.println(string);
String string = new String(ostrm_.toString("UTF-8"));
System.out.println(string);
final PrintStream blah = new PrintStream(ostrm_);
final String string = blah.toString();
System.out.println(string);
String blah = ostrm_.toString();
System.out.println(string);
byte[] blah = buffer;
String string = blah.toString();
我想我可以使用类似[[OutputStreamWriter的东西,但同样,我似乎无法使其正常工作。因此,如果Java专家能够帮助我解决似乎如此简单,很难的问题,那就太好了。...
因此,我想这将是一个简单的1或2行代码,以便我将OutputStream转换为String,以便我可以用自己的逻辑更好地检查它。所以下面的代码是...