gpt4 book ai didi

java - 如何创建内存中的 JarFile?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:56:06 24 4
gpt4 key购买 nike

我正在尝试编写如下函数:

public Map<String, Document> getTestXml(JarFile jarFile) {
Map<String, Document> result = Maps.newHashMap();

Enumeration<JarEntry> jarEntries = jarFile.getEntries();
while (jarEntries.hasMoreElements()) {
JarEntry jarEntry = jarEntries.nextElement();

String name = jarEntry.getName();
if (name.endsWith(".class") && !name.contains("$")) {
String testClassName = name.replace(".class", "").replace("/", ".");
String testXmlFilename = "TEST-" + testClassName + ".xml";

InputStream testXmlInputStream = testJarFile.getInputStream(
testJarFile.getJarEntry(testXmlFilename));

DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document testXmlDocument = documentBuilder.parse(testXmlInputStream);

result.put(testClassName, testXmlDocument);
}
}

return result;
}

我想编写一个单元测试,它实际上并不在文件系统上创建 JarFile。我试图寻找如何在内存中创建一个 File 对象,但没有找到类似的东西。有人有什么建议吗?

最佳答案

使用 JarInputStream 代替 JarFile。为了进行测试,将 JarInputStream 连接到加载了内存中 jar 数据的 ByteArrayInputStream,并在正常操作中将其连接到来自文件的输入流。

关于java - 如何创建内存中的 JarFile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6589580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com