在Java中,如何处理.jar文件的输入/输出?

3

请随意跳到 tl;dr。

这是我在命令行中使用 .jar 的通常体验:

java -cp test.jar test q a o 打开 jar 文件

接下来,输入类似于 UF UD UR 等等,然后进入程序

这会给我大约 20 行的“响应”

我想要做以下事情:

1 - 使用像上面那样的参数运行 jar。 这些参数应该由 GUI(复选框等)确定,我肯定可以做到。

2 - 在 .jar 打开的同时,提交类似于 UF UD UR 等等,就像以前一样。 这些提交也应该由 GUI 确定。

3 - 将背景中的 .jar 输出放入标签或其他东西中(一旦它变成字符串,我就可以继续进行了。我只需要帮助获取它)。

基本上: 打开 jar 在 jar 中输入内容 获取输入之后的输出 显示输出。

我看过一些关于 I/O 的链接,并尝试阅读它们,但大多数都是关于这个主题的问题,但没有有效的答案。

tl;dr 如果有人能够向我提供一个运行在命令行中的 .jar 的 java I/O 的有效示例,我将不胜感激。

1个回答

1

您可以直接尝试使用 java.util.JarFile 进行操作:

JarFile jar = new JarFile( "path to jar" ); // Opens the jar

Enumerator<JarEntry> es = jar.entries(); //Enumerator to the jar entries

while( es.hasMoreElements() ) { //Iterates until all entries have been visited

  JarEntry entry = es.nextElement(); //Gets the next entry in the jar

  System.out.println(  entry.getName() ); //Prints the entry name

  InputStream in = jar.getInputStream( entry ); //returns an inputstream from the entry
  ... 
}

确保:第1行打开.jar文件并将其分配给变量'jar' 第2行做了...某些事情。我不太确定是什么,但它似乎将一些条目分配给'es'?请在这里纠正我。while循环保持活动状态直到...什么时候?我很快就会阅读枚举器和.nextElement,以便更好地理解。输入有意义。如果有人能发布一个“现实世界”的例子,那仍然会受到赞赏。谢谢! - Stachu
我在代码示例中添加了更多注释,并纠正了一个小错误。枚举器只是没有“remove”方法的老派迭代器。while循环保持活动状态,直到所有条目都被访问。你所说的“现实世界”是什么意思? - paradigmatic
忘掉现实世界吧。好的,“Enumerator to the jar entries”是什么意思?基本上,什么是.jar文件中的“entries”?我想在回答这个问题后,我就可以开始了! - Stachu
“entries”是jar文件中的文件。只需复制代码,编译,运行即可看到结果。 - paradigmatic

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