如何在 tinkerpop 3.4 中使用 inputstream 导入 graphml 文件

问题描述

使用 tinkerpop 3.3.3,我能够如下加载 graphml

try (final InputStream stream = getClass().getClassLoader().getResourceAsstream("graph.xml")) {
    graph.io(IoCore.graphml()).reader().create().readGraph(stream,newGraph);
}

但 tinkerpop 3.4 已弃用 graph.io() 方法并提供了 GraphTraversalSource#io(String)

graph.traversal().io('graph.xml').read().iterate()

方法的问题在于我无法传递输入流,因为仅支持文件名字符串。因此,我无法导入 jar 类路径中存在的文件

任何人都知道从 tinkerpop 3.4 apis 中的应用程序类路径导入 graphml 的正确方法

解决方法

TinkerPop 文档明确说明如下:

https://tinkerpop.apache.org/javadocs/current/full/org/apache/tinkerpop/gremlin/structure/io/IoCore.html

"注意 GraphTraversalSource.io(String) 不支持从 java.io.InputStream 的读取操作或对 java.io.OutputStream 的写入操作。因此对于需要此功能的读取器或写入器,可以安全地使用此弃用方法。除非所有功能都被 GraphTraversalSource 的 io 步骤替换,否则无意删除此方法。"

因此,如果您正在使用流,则可以继续使用 IoCore。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...