如何从Eclipse Java Dynamic Web Project中的属性文件中读取?

时间:2014-01-16 22:28:47

标签: java eclipse file

我想我确实想做他所做的事here

但与我相比,它有点不同。我开始检查文件是否存在:

File f = new File("properties.txt");
System.out.println(f.exists());

我没有其他帖子中描述的文件夹/project/WebContent/WEB-INF/classes,但我编译的类在/project/build/classes中,所以我把我的属性文件放在那里(确切地说:在类的包文件夹中)我在哪里访问该文件)。

但它仍会打印false。也许我做错了,如果是的话,请告诉我。

2 个答案:

答案 0 :(得分:2)

如果您的文件位于类路径或类文件夹中,而不仅仅是从类路径获取路径。不要使用java.io.File的相对路径,它取决于您在JAVA代码中无法控制的当前工作目录。

您可以尝试这样:

URL url = getClass().getClassLoader().getResource("properties.txt");
File f = new File(url.getPath());
System.out.println(f.exists());  

如果您的文件properties.txt位于getResource(...)函数中提供相对路径的任何包中。例如getResource("properties\\properties.txt")

答案 1 :(得分:1)

执行此操作的代码非常简单。我们假设你有一个名为SampleApp.war的war文件,它的根目录下有一个名为myApp.properties的属性文件:

SampleApp.war

|

   |-------- myApp.properties

   |

   |-------- WEB-INF

                |
                |---- classes
                         |
                         |----- org
                                 |------ myApp
                                           |------- MyPropertiesReader.class

假设您要读取属性文件中存在的名为abc的属性:

myApp.properties中的

abc = someValue;
xyz = someOtherValue;

让我们考虑您的应用程序中的类org.myApp.MyPropertiesReader想要阅读该属性。这是相同的代码:

package org.myapp;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * Simple class meant to read a properties file
 * 
 * @author Sudarsan Padhy
 * 
 */
public class MyPropertiesReader {

    /**
     * Default Constructor
     * 
     */
    public MyPropertiesReader() {

    }

    /**
     * Some Method
     * 
     * @throws IOException
     * 
     */
    public void doSomeOperation() throws IOException {
        // Get the inputStream
        InputStream inputStream = this.getClass().getClassLoader()
                .getResourceAsStream("myApp.properties");

        Properties properties = new Properties();

        System.out.println("InputStream is: " + inputStream);

        // load the inputStream using the Properties
        properties.load(inputStream);
        // get the value of the property
        String propValue = properties.getProperty("abc");

        System.out.println("Property value is: " + propValue);
    }

}