在Android中解析SD卡

3

我的代码在 sourceURL 声明处停止并抛出异常:

java.net.MalformedURLException: 协议未找到:mnt/sdcard/Android/data...

URL sourceUrl = new URL(Environment.getExternalStorageDirectory() + "/Android/data/com.esentral.testdev/"+"temp2.xml");

MyXMLHandler myXMLHandler = new MyXMLHandler();
xr.setContentHandler(myXMLHandler);
xr.parse(new InputSource(sourceUrl.openStream()));

这里的情况是URL字符串被错误转换了吗?如果是,是否有常见的解决方法?我听说SAX是一个不错的选择,但可能会进一步复杂化问题。谢谢。

2个回答

4

您需要指定协议,如http、ftp、file等。由于在sdcard中访问它,因此整个路径之前应为"file://"

现在使用以下代码片段进行修改:

URL sourceUrl = new URL("file://" + Environment.getExternalStorageDirectory() + "/Android/data/com.esentral.testdev/"+"temp2.xml");
MyXMLHandler myXMLHandler = new MyXMLHandler();
xr.setContentHandler(myXMLHandler);
xr.parse(new InputSource(sourceUrl.openStream()));

1

有效的 URL 必须以协议开头。Environment.getExternalStorageDirectory() 返回文件路径而非协议,因此需要在字符串开头添加文件协议。


谢谢。你做得很好。 从这里开始会有进展的。 - babyhir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接