有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用Java在Eclipse中正确读取资源

我尝试加载此处的属性文件

<project>/resource/text/translation_en.properties

使用以下代码(在静态上下文中,目前没有从我初始化任何对象):

<This_Classes_name>.class.getResourceAsStream("/resource/text/translation_en.properties");

为什么我要这样加载它?首先我使用类对象,因为getResourceAsStream()不是静态的,我通过谷歌搜索了解到我应该使用这个方法来加载我的属性文件。然后,我使用了一个/Java,它看起来与我的Main不相关。java,但是这个项目。尽管如此,我仍然使用它得到null

如果在那个确切的地方有一个文件,这怎么可能不起作用呢?Java在这里做什么


共 (2) 个答案

  1. # 1 楼答案

    使用getResourceAsStream是因为它可以读取整个类路径中的文件(包括类路径中JAR中的文件)

    我认为该方法将文件名作为参数,没有任何路径,在您的示例中,类加载器将查找名为“/resource/text/translation_en.properties”的文件,而不是将第一部分解释为路径。 尝试这样加载:

    this.getClass().getClassLoader().getResourceAsStream("translation_en.properties");
    

    此外,您还必须确保文件实际位于类路径中。对于maven和eclipse,应该有一个文件夹“target”,其中包含所有生成的类。当项目在eclipse中运行时,这个文件夹会被添加到类路径中

    希望这有帮助

  2. # 2 楼答案

    资源需要在类路径中。一个选项是将整个/resource文件夹复制到源文件夹中。另一个选项是创建一个只包含资源的新源文件夹,并将/resource文件夹移到那里。不要将/resource文件夹设为源文件夹,除非您想使用getResourceAsStream("/text/translation_en.properties");