【发布时间】:2012-10-27 02:43:54
【问题描述】:
我不确定我这样做是否正确。 我想在我的 Java 项目中有一个包含一堆文本文件的文件夹或包。在代码中,我想列出文件夹中的所有文件,并能够读取它们。我希望这些资源文件成为我项目目录结构的一部分(以便它们可以使用我的源代码进行版本控制)。
我已经看到 ClassLoader.*resource 方法,但无法识别我的源目录中的文件夹并列出它的内容...
顺便说一句,我正在使用 Eclipse。 有人知道如何实现这个目标吗?
谢谢
============================================
更新:
感谢您的回复!我发现通过添加源文件夹,我只能通过名称访问里面的文件。但是,这不符合我的需要,因为文件夹的内容会发生变化,并且我希望能够动态读取所有内容,而不必在每次内容更改时都更改读取逻辑。我尝试为源文件夹中的常规文件夹创建一个文件并迭代它的内容。只要在 Eclipse 中运行,它就可以工作,但根据 Edwin 的评论,当我导出到 JAR 时这将不起作用,所以我回到了第一格。
我认为必须有一种方法可以在我的项目中包含我可以以编程方式访问的资源文件(Android 会这样做并且它基于 java 对吗?)。那么有没有另一种方法来创建一个包含一堆文件的“资源”包,我可以在运行时访问这些文件,而无需更新代码来查找每个文件?我真的不想将此文件夹与我的源文件分开并将其维护在不同的位置,因为这会使部署复杂化...... 有人有什么想法吗?
谢谢
======================================
解决方案:
我刚刚意识到 Android 在编译时会清点它的资源文件,以便在运行时使它们可用。所以这可能是要走的路:我将在我的 Ant 脚本中添加一个步骤,该脚本写入一个包含我文件夹中文件列表的文件(始终命名相同,以便我可以访问它)。这样我就可以知道所有可用资源文件的名称。感谢埃德温的帮助:)
【问题讨论】:
-
当你的项目被部署时,你是否设想这些文件被打包到 JAR 中还是仍然在一个单独的目录中?
-
我没关系,只要我可以在开发过程中添加文件并在运行时读取它们
-
@noobler 我担心一旦您将所有内容打包到 jar 或 war 文件中,您使用 URL 创建 File 对象的解决方案将无法使用。这仅在您可以直接访问硬盘上的文件时有效,但当访问需要压缩/解压缩或任何其他协议时,它将停止工作。