2013-04-17 115 views
0

我正在我的linux環境中寫一個路徑分隔符,它是爲了解析一個文件路徑,它既可以是linux,也可以是Windows風格,這是我之前從不知道的。目前我正在分裂使用File.separator,但只適用於我所在的平臺...窗口/ linux路徑組件分離

我正在尋找,以瞭解是否有一種方法來處理這個使用像路徑對象例如。

[...] 
Node pathElement = nodeList.item(nodePos); 
String path = pathElement.getTextContent(); 
String[] pathElements = path.split(File.separator); 
String contentFileName = pathElements[pathElements.length - 1]; 
String parentFolderPath = xmlFiles[u].getParentFile().getAbsolutePath(); 
pathElement.setTextContent(parentFolderPath + File.separator + contentFileName); 
[...] 

編輯:我需要能夠打破從Linux的窗口樣式路徑,反之亦然。我還試圖使用Paths.getPath(...)不成功

見從上述碼的輸出樣本:

/輸入/ ZIP_0bd78143-f6cd-473f-84f7-d0da09dc42aa/7634/C:\ SharedFiles \ 7634 \ 1

它使用Windows路徑作爲文件名,因爲它無法破解它。我試圖避免花哨的邏輯來檢測路徑的類型,如果可能的話。根據您的編輯

+0

編輯我的答案 – dardo

回答

1

所以,你可能需要在一個給定的URI來檢測文件系統,可能要看看這個:

http://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystems.html

+0

這就是問題的文件分隔符綁定到操作系統。因此,如果我在Linux上試圖破解Windows樣式路徑,我無法使用該屬性 – Stainedart

+0

該屬性根據運行JVM的環境而變化。從Oracle網站上的文檔:「分隔文件路徑組件的字符,在UNIX上是」/「,在Windows上是」\「。我相信它和File.separator不一樣。 – dardo

+0

我添加了一些信息,請參閱我的編輯。 – Stainedart