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

如何在Java JAR文件中获取资源的路径

周博达
2023-03-14
问题内容

我正在尝试获取资源的途径,但是我没有运气。

这是可行的(在IDE和JAR中都可以),但是这样一来,我无法获取文件的路径,只能获取文件内容:

ClassLoader classLoader = getClass().getClassLoader();
PrintInputStream(classLoader.getResourceAsStream("config/netclient.p"));

如果我这样做:

ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("config/netclient.p").getFile());

结果是: java.io.FileNotFoundException: file:/path/to/jarfile/bot.jar!/config/netclient.p (No such file or directory)

有没有办法获取资源文件的路径?


问题答案:

这是故意的。“文件”的内容可能无法作为文件使用。请记住,您正在处理的类和资源可能是JAR文件或其他类型的资源的一部分。类加载器不必为资源提供文件句柄,例如jar文件可能尚未扩展为文件系统中的单个文件。

如果绝对需要java.io.File,则可以通过将流复制到临时文件中并执行相同操作来获取java.io.File。



 类似资料:
  • 我一直在使用本教程对图片进行人脸检测。问题是当我获取java上使用的文件路径时 我怎么能在android Studio上翻译。我试着把我的lbpcascade_frontalface.xml放在原始资源上。Cascade分类器是opencv库提供的一个类。唯一的问题是他们只加载字符串路径(在xmlfile上)。这是我的代码。 我翻译成这样的方法。 我得到opencv的一个片段错误,它告诉我文件为空

  • 我正在使用Eclipse Plugin-in-project开发一个Eclipse插件,它将在工具栏中添加一个菜单项。 请帮我解决这个问题!

  • 我也试着做 而我不断得到这个结果。

  • 问题内容: 我知道如何使用读取带有的目录,但是对于我的特殊用例,我需要一个。我需要一个专门的原因是因为我需要通过调用从它获取对象。 这是我到目前为止的代码,它从中读取数据(在我的情况下为原语列表): 我曾尝试通过创建一个,但这只会导致: 有没有一种方法,我可以得到一个在目录中? 问题答案: 您可以像这样获取资产中的资源: 在您提供的 应该是资产的相对路径,同样你会提供给。 或者,您也可以这样创建:

  • 问题内容: 我在项目的根目录中有一个资源文件夹/程序包,我“不想”加载某个文件。如果我想加载某个文件,我将使用class.getResourceAsStream,我会很好的!我实际上想要做的是在资源文件夹中加载一个“文件夹”,循环访问该文件夹中的文件,并获取每个文件的流,并读取内容…假设在运行时之前未确定文件名… 我该怎么办?有没有一种方法可以获取jar文件中“文件夹”中文件的列表?请注意,带有资

  • 问题内容: 我必须阅读一个包含字符串列表的文件。我试图遵循建议这个职位。两种解决方案都需要使用,但使用而不是a 作为参数。 我需要一个。 这篇文章 将 是我的问题,除非OP被劝说不要完全使用文件。如果要使用Apache方法,则需要一个文件,这是我最初遇到的问题的首选解决方案。 我的文件很小(大约一百行),每个程序实例一个文件,因此我不必担心在内存中有另一个文件副本。因此,我可以使用更基本的方法来读