0
我想解析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
的Java:
path = URLDecoder.decode(originalPath, "ISO-8859-1");
--
path = URLDecoder.decode(originalPath, "UTF-8");
--
path = new java.net.URI(originalPath).getPath();
但我找不到使用代碼中生成的path
的文件。儘管在調試器中路徑顯示正確,但是exists()
或isFile()
始終爲false。
我該如何繼續?
可悲的是我沒有從操作系統中獲取文件名,而是從XML文件中獲取文件名。我是否遇到長期存在的JVM錯誤?
- How can I open files containing accents in Java?
- How to fix java when if refused to open a file with special charater in filename?
設置JVM特定區域設置是不能接受的,因爲我不需要在用戶的區域只打開文件。
首先,數字實體引用「&」應該在XML解析器中變成「&」。你正在使用哪個分析器? – Joni
我正在使用SAXParser來讀取文件:https://github.com/codercowboy/iTunesUtilities/blob/master/src/com/worldsworstsoftware/xmltagparser/SimpleXMLTagParser.java#L124,並返回一個位置。 –