在java中执行命令提示符

时间:2014-09-11 23:33:39

标签: java

我在java中执行这些命令,我​​收到了以下错误

symbol  : method write(java.lang.String)
location: class java.io.OutputStream
out.write("tabcmd publish C:\\Users\\c200433\\Desktop\\Ana\\".getBytes()+filename+" --db-username IIP_RBM_USER --db-password Ytpqxsb9dw".getBytes());



String command = "cmd /c start cmd.exe";
    Process child = Runtime.getRuntime().exec(command);
    OutputStream out = child.getOutputStream();

out.write("tabcmd publish C:\\Users\\c200433\\Desktop\\Ana\\".getBytes()+filename+" --db-username IIP_R --db-password Ytb9dw".getBytes());

How Do i resolve this issue.

1 个答案:

答案 0 :(得分:0)

OutputStream除了byte[],而不是String

out.write("tabcmd publish C:\\Users\\c200433\\Desktop\\Ana\\".getBytes() +
           filename + " --db-username IIP_R --db-password Ytb9dw".getBytes());

我不认为javac允许"...".getBytes() + String,因为它是byte[] + String。 +运算符是为NumberStringboolean定义的。不是byte[]

相反,你必须:

  • 在您的信息流上使用PrintStream
  • 首先连接到String,然后在结果上调用getBytes。

使用PrintStream:

try (PrintStream ps = new PrintStream(child.getOutputStream())) {
  ps.append("tabcmd publish C:\\Users\\c200433\\Desktop\\Ana\\")
    .append(filename)
    .append(" --db-username IIP_R --db-password Ytb9dw");
}

使用String连接:

out.write( ("tabcmd publish C:\\Users\\c200433\\Desktop\\Ana\\" +
            filename + " --db-username IIP_R --db-password Ytb9dw").getBytes(Charset.forName("utf-8")));

我使用getBytes(Charset)而不是getBytes(),但这取决于您的流程(例如:它是否接受UTF-8?)。但是,您必须记住Java String是Unicode序列,因此getBytes()可能使用 Windows cp1252 (Windows上的默认值)。

我没有检查PrintStream源代码,但是如果它使用getBytes()而没有Charset,那么您应该使用带有相应字符集的OutputStreamWriter。< / p>