我在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.
答案 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
。 +运算符是为Number
,String
和boolean
定义的。不是byte[]
。
相反,你必须:
使用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>