從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