0

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

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”的一部分?

4

2 回答 2

1

使用引号:

java -jar myjar.jar "C:\example a\test" "C:\example b\test\"
于 2013-08-21T19:04:54.527 回答
0

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

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

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

这样你就可以比较它们了。

于 2013-08-21T19:07:45.387 回答