Java - 将多个路径作为命令行参数的空白问题

时间:2013-08-21 18:42:07

标签: java command-line path whitespace

假设我想在命令行上传递以下路径:

Path a: C:\example a\test
Path b: C:\example b\test\

java -jar myjar.jar C:\example a\test C:\example b\test\

Java使用空格分割参数,所以我们最终得到一个像这样的args数组:

arr[0] = C:\example
arr[1] = a\test
arr[2] = C:\example
arr[3] = b\test\

但是如果我们也想接受非绝对路径,那么提供“\test”会导致程序接受<parent directory>\test

这会带来许多问题,并且比首次出现时要复杂得多。我们如何告诉Java“a\test”实际上是“C:\example a\test”而不是“<parent directory>\a\test”的一部分?

2 个答案:

答案 0 :(得分:1)

使用引号:

java -jar myjar.jar "C:\example a\test" "C:\example b\test\"

答案 1 :(得分:0)

创建规范文件并从中提取绝对名称:

try {
    File file = (new File(arr[0])).getCanonicalFile();
    arr[0] = file.getAbsolutePath();

} catch (IOException e) {
    // handle exception
}

这样你可以比较它们。