从Java教程:http://docs.oracle.com/javase/tutorial/essential/io/pathOps.html卸下裁员从路径
下面的实施例都包括冗余:
/home/./joe/foo
/home/sally/../joe/foo
的标准化的方法删除任何冗余元件,其中包括 任何“ “。或“目录/ ..”发生。无论是前面的例子中 正常化:
/home/joe/foo
在哪里了两个“冗余”路径指向,以及他们如何可以“归一化”这样的吗?
从Java教程:http://docs.oracle.com/javase/tutorial/essential/io/pathOps.html卸下裁员从路径
下面的实施例都包括冗余:
/home/./joe/foo
/home/sally/../joe/foo
的标准化的方法删除任何冗余元件,其中包括 任何“ “。或“目录/ ..”发生。无论是前面的例子中 正常化:
/home/joe/foo
在哪里了两个“冗余”路径指向,以及他们如何可以“归一化”这样的吗?
首先,.
表示当前目录,..
表示目录。在
/home/./joe/foo
.
分/家,因为当前目录是在这种背景下的“家”。作为另一示例,这些是相同的
/foo/././././.
/foo
在
/home/sally/../joe/foo
的/萨利/ ..是多余的。这就像说,“进入这个目录,然后退后一步”。它与此相同:
/home/joe/foo
“路径”这个名字比您想象的更具文字性。如果您将文件系统视为以根目录/
为根的树,则每个路径元素代表您向下走的选择,远离根目录。/home/joe/foo
意味着
home
home
去joe
joe
去foo
路径/home/sally/../joe/foo
意味着
home
home
去sally
..
)高达home
再次home
去到joe
joe
去foo
所以你可以看到两条路径让你到同一个地方。
单点装置所以由.
路径元件可以被移除“在同一个地方的逗留”。
你可以分割路径wrt“/”然后处理。
String[] arr = path.split("/");
for(int i = 0; i < arr.length; i++){
if(arr[i].equals("."))
arr[i] = "";
else if(arr[i].equals("..")){
boolean changed = false;int j = i - 1;
while(arr[j].equals(""))
j--;
if(j >= 0)
arr[j] = "";
}
}
这将删除冗余元素,然后再次组合数组。
你不明白'.'和'..'是什么意思? – 2013-05-14 01:35:37
我只是明白,是目前的目录和父目录,我不明白他们是如何工作的 – 2013-05-14 01:46:53