web-dev-qa-db-fra.com

comment lire le nom de la propriété avec des espaces en java

J'essaie de charger tous les noms de propriétés présents dans le fichier de propriétés à l'aide du code ci-dessous:

for(Enumeration<String> en = (Enumeration<String>) prop.propertyNames();en.hasMoreElements();){

    String key = (String)en.nextElement();
    System.out.println("Property name is "+key);
}

Mais mon fichier de propriétés a le contenu ci-dessous:

username=
password=
Parent file name=
Child file name =

Après avoir exécuté le code, je reçois le résultat en tant que:

username password Parent Child

Si le nom de la propriété comporte des espaces, il ne renvoie que le premier mot ..

Quelqu'un peut-il me dire s'il vous plaît comment faire cela?

19
javanoob

Vous pouvez échapper aux espaces de votre fichier de propriétés, mais je pense que cela va commencer à avoir une apparence moche.

username=a
password=b
Parent\ file\ name=c
Child\ file\ name=d

Vous feriez peut-être mieux d'écrire votre propre implémentation avec split() ou indexOf() ou tout ce que votre cœur désire afin d'éviter tout bogue ou maux de tête à l'avenir.

36
cklab

Dans Java.util.Properties, =, : ou un espace sont des délimiteurs clé/valeur lors du chargement à partir d'un fichier de propriétés.

Ci-dessous sont détaillés Javadoc de sa public void load(Reader reader)

La clé contient tous les caractères de la ligne commençant par le premier caractère d’espace non blanc et jusqu’à, mais non compris, le premier caractère =, : ou d’espace blanc non échappé, autre que le caractère de fin de ligne. Tous ces caractères de fin de clé peuvent être inclus dans la clé en leur évitant un caractère antislash précédent. http://docs.Oracle.com/javase/6/docs/api/

6
kshen

Voici comment je le fais:

public class PropHelper {
    final static String PROPERTY_FILEPATH = "blah/blah.properties";

    static String getPropertyWithSpaces(String property, String delimiter) {
        try {
            FileReader reader = new FileReader(PROPERTY_FILEPATH);
            Properties propertiesObj = new Properties();
            propertiesObj.load(reader);
            return propertiesObj.getProperty(property).replaceAll(delimiter, "");
        } catch (Exception ex) {
            System.out.println("FATAL ERROR: " + ex.getMessage());
            System.exit(1);
        }

        return null;
    }
}

Quelque part dans .properties file:

settings = ` ⚙ Settings `

Voici comment je l'appelle:

System.out.println("|" + PropHelper.getPropertyWithSpaces("settings", "`") + "|");

Cette méthode fonctionne avec les espaces internes, internes et finaux . Enjoy!

0
Nick Ivanov