0

我的情况有点奇怪。我正在编写一个 Java 程序来自动与我的 Raspberry Pi (Linux) 上的传输通信。

我有以下代码(为了方便/安全而进行了简化和编辑):

String s;
String fullCommand = "transmission-remote -n username:password -a /location/to/file.torrent";
String[] cmd = fullCommand.split(" ");
Process p = Runtime.getRuntime().exec(cmd);
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((s = br.readLine()) != null) {
   System.out.println("line: " + s);
}
p.waitFor();
System.out.println("exit: " + p.exitValue());
p.destroy();

我得到的输出是“不存在或无效的种子文件”。如果我在命令行上运行完全相同的脚本,我会成功(因此文件存在并且有效)。

我读过 Runtime.exec() 有空格问题。因此拆分(“”)。没有它也行不通。

我知道 Runtime.exec() 与命令行不同,但有什么办法可以让它工作吗?

我有一个解决方法,但我想一步完成。如果有人感兴趣:解决方法是将命令写入 .sh 文件,使其可执行并使用 Runtime.exec() 运行它。这确实有效。

4

0 回答 0