代码之家  ›  专栏  ›  技术社区  ›  erikbstack

用Java正确读取Eclipse资源

  •  2
  • erikbstack  · 技术社区  · 14 年前

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

    <project>/resource/text/translation_en.properties
    

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

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

    我为什么要这样装?首先,我使用class对象是因为getResourceAsstream()不是静态的,我通过google了解到我应该使用这个方法来加载我的属性文件。然后我使用A/Java并不像我的Mava.java,而是项目。尽管如此,我还是得到了空值。

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

    2 回复  |  直到 12 年前
        1
  •  2
  •   Tassos Bassoukos    14 年前

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

        2
  •  1
  •   fasseg    12 年前

    使用getresourceasstream,因为它可以从整个类路径读取文件(包括类路径中jar中的文件)

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

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

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

    希望有帮助…