当前位置: 首页 > 面试题库 >

在.jar中获取目录

范稳
2023-03-14
问题内容

我正在尝试访问我的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罐子里的东西?


问题答案:

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

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

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

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

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

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

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

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

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

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

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

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

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

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



 类似资料:
  • 我有一个基于maven的项目,在那里我必须调用一个外部jar(比如country.jar) 我在src/lib文件夹中添加了这个jar,并在pom.xml中进行了以下设置

  • 问题内容: 我需要一种在Linux上运行的C ++程序中获取用户主目录的方法。如果相同的代码可以在Unix上运行,那就太好了。我不想使用HOME环境值。 AFAIK,根主目录是/ root。如果我的程序是由root用户运行的,可以在该目录中创建一些文件/文件夹吗? 问题答案: 您需要获取当前用户的用户ID,然后获取该用户的密码条目(包括主目录): 注意:如果您在线程化应用程序中需要此功能,则可以改

  • 问题内容: 如何获得Java中驱动器上特定目录的名称? 例如,我在D驱动器上的目录下有一个名为的文件。 我想返回此文件的目录名称。 问题答案: 记住,代表目录和文件。

  • 我试图得到系统路径,其中jar位于运行时。 下面的代码在REPL中工作,但是,如果我使用sbt组装jar,它会失败, SBT错误如下, 运行java.lang.运行时异常:未检测到主类。在scala.sys.package$。错误(package.scala:27)[跟踪]堆栈跟踪抑制:运行最后一次编译:运行完整的输出。[错误](编译:运行)未检测到主类。[错误]总时间:0秒,4月13日2016

  • 在Eclipse中,我有两个项目: 大天使。core——一个Maven项目 ArchangelWEB-一个动态Web项目(为Tomcat构建)。 第一个,大天使。core拥有所有的基本代码,并使用Maven来解决依赖关系。第二个是核心项目之上的Web添加。这只有特定于演示/视图的代码。我想把它们分开,因为我将来可能会有其他项目依赖于核心,我不希望核心项目依赖于Web库。 现在,在大天使网的建造路径

  • 问题内容: 如何获取最新的文件名或添加到目录中的文件路径? 问题答案: