【问题标题】:How to set file path for FileInputStream?如何为 FileInputStream 设置文件路径?
【发布时间】:2017-02-22 05:53:34
【问题描述】:

我正在尝试解析 SVG 文件以在 android 应用程序中使用 Xpath 获取路径。本机 java 以以下方式解析路径。

try {
    Document document = builder.parse(
            new FileInputStream("c:\\employees.xml"));
} catch (SAXException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

我尝试如下使用FileDescriptor

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = null;
        try {
            builder = factory.newDocumentBuilder();
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        }


        AssetManager assetManager = getBaseContext().getAssets();
        AssetFileDescriptor assetFileDescriptor = null;
        try {
            assetFileDescriptor = assetManager.openFd("android.svg");

        } catch (IOException e) {
            e.printStackTrace();
        }
        FileDescriptor fileDescriptor = assetFileDescriptor.getFileDescriptor();
        FileInputStream stream = new FileInputStream(fileDescriptor);

        try {
            Document document = builder.parse(stream);
        } catch (SAXException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

但是我的应用停止了工作。我的代码有什么问题?

【问题讨论】:

  • 我认为答案已经在stackoverflow中了。这可能会帮助你link

标签: java android svg xpath


【解决方案1】:

您不需要 FileDescriptor。尝试如下。

InputStream input = assetManager.open("android.svg"); //From your asset folder

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;
try {
    builder = factory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
    e.printStackTrace();
}

并将您的 input 解析为 builder

Document document = builder.parse(input);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 2015-09-16
    • 2020-06-07
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    相关资源
    最近更新 更多