我正在尝试使用此java代码运行perl脚本:
txt
因此,第一个脚本读取result.txt
文件,然后打印一些结果。
然后第二个脚本获取此输出,进行其他一些修改,然后将它们打印在新的txt文件中cmd
此命令行在Windows上使用|
可以正常工作,但在使用java时,>
和void sendMessage(char data[]) {
//sending data
WiFiUDP Udp2;
Udp2.beginPacket("192.168.0.123", 9875);
//Serial.println("Sending data to android: ");
Serial.println(data);
Udp2.write(data);
Udp2.endPacket();
delay(1);
存在问题。
有没有办法使用java运行这样的命令?
答案 0 :(得分:2)
问题是管道使用">"根本不起作用(当你制作那些java"进程"调用)时。
您需要做的是:在创建此类流程时,您可以(程序化地)获取其输入和输出流。
因此,您只需执行
,而不是执行管道命令perl test.pl
然后您的 java 代码必须从该进程的stdout读取并将该内容写入文件中;或者在您的情况下,将其写入运行第二个脚本的另一个进程调用的stdin。
有关如何操作的信息,请参阅here。
或者,您可以增强perl脚本以获取文件名参数,以便您可以将其称为
perl test.pl --write-to tmp.txt
perl test1.pl --read-from tmp.txt --write-to test.txt
例如,。那么你的java端可以一次性完成两个调用。