2013-04-17 67 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