我正在开发一个独立于平台的应用程序。我收到一个文件 URL*。在 Windows 上,这些是:
file:///Z:/folder%20to%20file/file.txt
file://host/folder%20to%20file/file.txt
(UNC路径)
我正在使用 new File(URI(urlOfDocument).getPath())
它适用于第一个以及在 Unix、Linux、OS X 上,但不适用于 UNC 路径。
将 file: URL 转换为 File(..) 路径并与 Java 6 兼容的标准方法是什么?
……
\* 注意:我从 OpenOffice / LibreOffice (XModel.getURL()) 接收这些 URL。
原文由 Christian Fries 发布,翻译遵循 CC BY-SA 4.0 许可协议
根据 Simone Giannis 的回答 中 提供的提示和链接,这是我解决此问题的方法。
我正在测试
uri.getAuthority()
,因为 UNC 路径将报告授权。这是一个错误 - 所以我依赖于一个错误的存在,这是邪恶的,但它似乎会永远存在(因为 Java 7 解决了 java.nio.Paths 中的问题)。注意:在我的上下文中,我将收到绝对路径。我已经在 Windows 和 OS X 上测试过了。
(仍在寻找更好的方法)