我正在尝试解析 Mac OS 上的 iTunes XML 库文件。
在 iTunes 文件中,我有这个字符串:
<key>Location</key>
<string>file://localhost/home/user/Downloads/album/01%C4%2024%5F7%20%28Intro%29%20&.mp3</string>
如您所见,它似乎是 URL 编码的。现在,下一步是在文件系统上查找并读取此文件,但似乎我找不到使用 Java 或 Ruby 执行此操作的正确方法。
我的主要目标是在 Java 中做到这一点,但为了简单起见,我在 Ruby 中尝试了这个:
2.0.0p247 :003 > URI.decode(str)
=> "file://localhost/home/user/Downloads/album/01\xC4 24_7 (Intro) &.mp3"
2.0.0p247 :004 > CGI.unescape(str)
=> "file://localhost/home/user/Downloads/album/01\xC4 24_7 (Intro) &.mp3"
该文件在文件管理器中显示为/home/user/Downloads/album/01Ä 24_7 (Intro) &.mp3
爪哇:
path = URLDecoder.decode( originalPath, "ISO-8859-1" );
--
path = URLDecoder.decode( originalPath, "UTF-8" );
--
path = new java.net.URI(originalPath).getPath();
但我无法使用生成path
的代码找到文件。exists()
或者isFile()
总是错误的,尽管在调试器中路径正确显示。
我应该如何进行?
可悲的是,我不是从操作系统中获取文件名,而是从 XML 文件中获取。我遇到了一个长期存在的 JVM 错误吗?
将 JVM 设置为特定的语言环境是不可接受的,因为我不需要只打开用户语言环境中的文件。