在.jar中获取目录

象牙

我正在尝试访问我的jar文件中的目录。我想浏览目录本身内的每个文件。例如,我尝试使用以下方法:

URL imagesDirectoryURL=getClass().getClassLoader().getResource("Images");

if(imagesFolderURL!=null)
{
    File imagesDirectory= new File(imagesDirectoryURL.getFile());
}

如果我测试此小程序,它将很好地工作。但是,一旦将内容物放入广口瓶中,并不是有几个原因。如果使用此代码,则URL始终指向jar外部,因此必须将Images目录放在此处。但是如果我使用的话new File(imagesDirectoryURL.toURI());,它不能在jar里面起作用,因为我得到了错误URI not hierarchical我确定该目录存在于jar中。我应该如何获得Images罐子里的东西?

安德鲁·汤普森(Andrew Thompson):

Jar中的路径是路径,而不是实际目录,因为您可以在文件系统上使用它们。要在Jar文件的特定路径中获取所有资源,请执行以下操作:

  • 增益的URL指向罐。
  • InputStream从中获取URL
  • ZipInputStream构造InputStream
  • 迭代每个ZipEntry,寻找与所需路径的匹配。

..当Applet不在罐中时,我仍然可以测试我的Applet吗?还是我必须编程两种方式来获取我的图像?

ZipInputStream文件系统上的目录不会松动资源工作。但是,我强烈建议您使用诸如Ant之类的构建工具来构建(编译/ jar /签名等)小程序。编写并检查构建脚本可能需要一个小时左右,但是此后您可以通过几次击键和几秒钟的时间来构建项目。

如果要测试我的Aplet,如果我总是必须提取并签名罐子,那会很烦人

我不确定你在那里的意思。“提取”从何而来?如果我不清楚,沙盒小程序可以通过这种方式从archive属性中提到的任何Jar中加载资源您可能要做的另一件事是将资源Jar与applet Jar分开。资源更改通常少于代码更改,因此您的构建可能可以采用一些捷径。

我想我确实必须考虑将我的图片放入jar之外的单独目录中。

如果您是在服务器上说的话,那么缺少服务器的帮助下将没有实用的方法来获取图像文件列表。EG有些服务器设置不安全,无法为没有默认文件(例如index.html)的任何目录生成基于HTML的“文件列表”。


我只有一个罐子,里面放着我的课程,图像和声音。

OK-考虑将声音和图像移到单独的Jar中。或者至少将它们“不压缩”地放入罐子中。尽管Zip压缩技术可以很好地与类配合使用,但是它们在压缩(否则已经压缩)媒体格式时效率较低。

我必须签名,因为我使用“首选项”类保存用户设置。”

Preferences对于applet,还有其他替代方法,例如cookie。对于插件2体系结构小程序,可以使用Java Web Start启动小程序(仍嵌入在浏览器中)JWS提供了PersistenceService。这是我的小演示。的PersistenceService

说到JWS,这使我想到:您是否可以肯定,此游戏作为applet会比JFrame使用JWS启动的应用程序(例如使用更好

小程序不会给您带来压力,PersistenceService自Java 1.2引入以来,JWS就提供了小程序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章