145 votes

Lecture des Propriétés de fichier en Java

J'ai le code suivant en essayant de lire un fichier de propriétés:

Properties prop = new Properties();
ClassLoader loader = Thread.currentThread().getContextClassLoader();           
InputStream stream = loader.getResourceAsStream("myProp.properties");
prop.load(stream);

J'obtiens une exception à la dernière ligne. Plus précisément:

Exception in thread "main" java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Properties.java:418)
at java.util.Properties.load0(Properties.java:337)
at java.util.Properties.load(Properties.java:325)
at Assignment1.BaseStation.readPropertyFile(BaseStation.java:46)
at Assignment1.BaseStation.main(BaseStation.java:87)

merci, Nikos

102voto

Mark Elliot Points 31871

Basé sur votre exception, l' InputStream est nulle, cela signifie que le chargeur de classe n'est pas de trouver votre fichier de propriétés. Je devine que myProp.les propriétés dans la racine de votre projet, si c'est le cas, vous avez besoin d'une barre oblique:

InputStream stream = loader.getResourceAsStream("/myProp.properties");

69voto

Steven Gomez Points 121


Vous pouvez trouver des informations sur cette page:
http://www.mkyong.com/java/java-properties-file-examples/

Properties prop = new Properties();
try {
    //load a properties file from class path, inside static method
    prop.load(App.class.getClassLoader().getResourceAsStream("config.properties"));

    //get the property value and print it out
    System.out.println(prop.getProperty("database"));
    System.out.println(prop.getProperty("dbuser"));
    System.out.println(prop.getProperty("dbpassword"));

} 
catch (IOException ex) {
    ex.printStackTrace();
}

30voto

dku.rajkumar Points 8886

vous pouvez utiliser ResourceBundle classe de lire un fichier de propriétés.

ResourceBundle rb= ResourceBundle.getBundle("myProp.properties");

8voto

Mukus Points 1104

Vous ne pouvez pas utiliser ce mot-clé comme

props.load(this.getClass().getResourceAsStream("myProps.properties"));

dans un contexte statique.

La meilleure chose serait de se procurer de l'application de contexte comme celui -

ApplicationContext context = new ClassPathXmlApplicationContext("classpath:/META-INF/spring/app-context.xml");

ensuite, vous pouvez charger le fichier de ressources dans le classpath -

//load a properties file from class path, inside static method
        prop.load(context.getClassLoader().getResourceAsStream("config.properties"));

Ce sera le travail pour à la fois statiques et non statiques contexte et la meilleure partie est ce fichier de propriétés peuvent être dans n'importe quel package/dossier inclus dans le classpath de l'application.

7voto

yegor256 Points 21737

Votre fichier doit être disponible en com/example/foo/myProps.properties dans le classpath. Puis la charger comme:

props.load(this.getClass().getResourceAsStream("myProps.properties"));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X