如何在项目中打包资源文件

时间:2012-10-26 14:56:11

标签: java resources package

我不确定我是否正确地这样做了。 我想在我的Java项目中有一个文件夹或包,其中包含一堆文本文件。在代码中,我想列出文件夹中的所有文件,并能够阅读它们。我希望这些资源文件成为我项目目录结构的一部分(以便它们可以通过我的源代码进行版本控制)。

我见过ClassLoader。*资源方法,但无法识别源目录中的文件夹并列出其内容......

BTW我正在使用Eclipse。 有人知道如何实现这一目标吗?

由于

==========================================

更新:

感谢您的回复!我发现通过添加源文件夹,我只能按名称访问里面的文件。然而,这并不符合我的需要,因为文件夹的内容会发生变化,我希望能够动态地读取所有内容,而不必在每次内容更改时都更改读取逻辑。我尝试为源文件夹中的常规文件夹创建一个文件,并迭代它的内容。只要在Eclipse中运行,它就可以运行,但根据Edwin的评论,当我导出到JAR时,这将不起作用,所以我回到了第一个方位。

我认为必须有一种方法可以在我的项目中包含我可以以编程方式访问的资源文件(Android会这样做,并且它基于java吗?)。那么是否有另一种方法来创建一个'资源'包,其中包含我可以在运行时访问的一堆文件,而无需更新代码来查找每个文件?我真的不想将此文件夹与我的源文件分开,并将其保存在不同的位置,因为这会使部署复杂化... 有没有人有任何想法?

由于

====================================

解决方案:

我刚刚意识到Android会在编译时为它们编制资源文件,以便在运行时使用它们。所以这可能是要走的路:我只是在我的Ant脚本中添加一个步骤来编写一个文件(总是命名相同,所以我可以访问它),其中包含我文件夹中的文件列表。这样我就会知道所有可用资源文件的名称。感谢Edwin的帮助:)

1 个答案:

答案 0 :(得分:2)

确保您的资源文件夹是Eclipse Build Path对话框中的源文件夹。然后,您将能够使用您在问题中提到的ClassLoader方法加载它们。

enter image description here

如果您使用此技术,源文件夹中的每个子文件夹都被视为一个包。因此,请确保在加载资源时考虑到这一点。

此技术基本上确保编译此文件夹中的所有Java文件并将其放在分发文件夹下。只需将任何其他文件从此文件夹复制到分发文件夹(即bin或classes文件夹)。

稍后,当您将项目打包到jar或war中时,您必须确保这些文件包含在打包文件中。