9
votes

Comment savoir si une propriété existe ou non dans un fichier de propriété?

Comment savoir si une propriété existe ou non dans un fichier de propriété en Java?


0 commentaires

8 Réponses :


13
votes

Selon http: //java.sun. COM / Javase / 6 / Docs / API / Java / UTIL / Propriétés.html , GetProperty () Retours NULL Si la propriété n'a pas été trouvée. Vous pouvez également appeler PropertyNames () ou stringpropertynames () et consultez si le nom de propriété d'intérêt est dans le jeu retourné.


0 commentaires

4
votes

Il suffit de charger le fichier de propriétés, puis d'essayer d'obtenir la propriété souhaitée.

public String getProperty(String key)


0 commentaires


-1
votes

Voici quelques astuces Comment savoir que certains fichiers (non obligatoires de propriété) existe dans le chemin de classe

public class FileUtil {
    public static boolean isFileExists(String fileName){
         return null != FileUtil.class.getResourceAsStream(fileName);
    }
}


0 commentaires

12
votes

Une autre alternative consiste à exploiter le fait que les propriétés étend Hashtable et utilisent contenant la clé .


1 commentaires

Cela ne fonctionne pas pour moi en Java8 via Groovy. Je ne suis pas sûr que cela fonctionnerait dans Pure Java non plus



1
votes

Si vous souhaitez vérifier qu'au début du programme, vous pouvez procéder comme suit:

  1. Créer une classe VerifiedProperties code> qui étend Propriétés CODE> LI>
  2. Ajoutez toutes les propriétés en tant que champs de cette classe comme finale publique int / string / boolean / etc ... code> li>
  3. Ajouter String Final String NetworkNotvalid = "Propriété non valide" Code> String à cette classe LI>
  4. Ajouter Final String NetworkNotFound = "Propriété introuvable" Code> String à cette classe LI>
  5. remplacement getProperty () code> méthode à partir de la classe de propriétés. Li>
  6. Vous pouvez ajouter @depecated code> Tag pour suggérer une utilisation des champs. Il est impossible de cacher cette méthode car il est public dans la classe de propriétés. Li>
  7. Initialisez tous les champs du constructeur à l'aide de getProperty () code> méthode ou dédié pour type (examens d'aspect ci-dessous) li> ol>

    Exemple de méthodes qui s'occupe de différents types de propriétés: P>

    @Override
    @Deprecated
    /*
     Deprecated annotation added to suggest usage of the fields.
     */
    public final String getProperty(String key)
    {
        String propertyValue = super.getProperty(key);
        if (propertyValue != null)
        {
            return propertyValue;
        }
        else
        {
            throw new NoSuchFieldError(this.propertyNotFound + " " + key);
        }
    }
    private int getIntegerProperty(String key)
    {
        String propertyValue = this.getProperty(key);
        try
        {
            int propertyIntValue = Integer.parseInt(propertyValue);
            return propertyIntValue;
        }
        catch (NumberFormatException e)
        {
            throw new NumberFormatException(this.propertyNotValid + " " + key);
        }
    }
    private boolean getBooleanProperty(String key)
    {
        String propertyValue = this.getProperty(key);
        try
        {
            boolean propertyBooleanValue = Boolean.parseBoolean(propertyValue);
            return propertyBooleanValue;
        }
        catch (NumberFormatException e)
        {
            throw new NumberFormatException(this.propertyNotValid + " " + key);
        }
    }
    private long getLongProperty(String key)
    {
        String propertyValue = this.getProperty(key);
        try
        {
            long propertyLongValue = Long.parseLong(propertyValue);
            return propertyLongValue;
        }
        catch (NumberFormatException e)
        {
            throw new NumberFormatException(this.propertyNotValid + " " + key);
        }
    }
    


0 commentaires

1
votes

La réponse de Crazyscot est maintenant obsolète. Selon le nouveau Javadoc , la propriété sera simplement créée si cela n'existe pas,

"S'il n'y a pas d'ensemble actuel de propriétés du système, un ensemble de propriétés du système est d'abord créé et initialisé de la même manière que la méthode getProperties".


0 commentaires

2
votes

Vous pouvez utiliser HASPROPERTY

AllValues.hasProperty("childList")


1 commentaires

Je ne vois pas cette méthode dans mon débogueur ou mon javadoc pour 7 ou 8. docs.oracle.com/javase/8/docs/api/java/util/properties.html