我是 Java 新手,正在尝试将我的一个项目从 C 转换为 Java,以便将其与另一个 Java 程序结合起来。当我使用 Runtime.exec() 时,我很难获得正确的结果。我有以下程序段,Java 忽略处理给定的命令。
command1 = "mv output/tsk/dir1/metabolic\\ waste.txt output/converted/file16.txt";
r2 = Runtime.getRuntime();
p2 = r2.exec(command1);
p2.waitFor();
这里的问题是文件名“metabolic Waste.txt”。当没有空间时,相同的命令也会起作用。我知道我必须使用转义字符来表示空格,并且我这样做了。顺便说一句,我正在 Ubuntu 上工作。
我也尝试过使用
String[] command1 = new String[] {"mv output/tsk/dir1/metabolic\ waste.txt", "output/converted/file16.txt";
但没有成功。
附注给定的代码只是一个示例。我不只使用 linux mv 命令。我还运行一些命令行工具,例如 pdf2txt。如果文件名中有空格,我在运行命令时仍然遇到同样的问题。
已解决:我已经解决了我的问题。可笑的是我不得不删除转义字符并使用字符串数组。因此,空格没有转义字符。以下代码仅适用于本示例以及更一般的情况。
source_filepath = "output/tsk/dir1/metabolic waste.txt";
dest_filepath = "output/converted/file16.txt";
String[] str2= {"mv", source_filepath, dest_filepath};
r2 = Runtime.getRuntime().exec(str2);
p2.waitFor();
您必须转义转义,或者将路径用引号引起来:
String[] command1 = new String[] {"mv output/tsk/dir1/metabolic\\ waste.txt", "output/converted/file16.txt"};
String[] command1 = new String[] {"mv \"output/tsk/dir1/metabolic waste.txt\"", "output/converted/file16.txt"};
你必须使用\\
因为java也使用\
作为转义字符,所以"\\"
实际上只包含一个\
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)