L'exemple de cet article décrit la méthode de lecture du fichier de configuration des propriétés en java. Partagez-le avec tout le monde pour votre référence. L'analyse spécifique est la suivante :
Au cours des deux derniers jours, j'ai travaillé sur des projets Java et utilisé des fichiers de propriétés. J'ai cherché des informations sur Internet pendant longtemps, je n'ai pas trouvé de méthode satisfaisante. cela m'a permis de lire les valeurs des propriétésdans le fichier .properties. C'est déprimant. Il existe à peu près les méthodes suivantes pour obtenir les valeurs d'attributsur Internet. optimisé pour obtenir les meilleurs résultats. Ce qui suit utilise le fichier date.properties comme exemple. Le fichier est placé dans le répertoire src. Le contenu du fichier est :
startdate=2011-02-07
totalweek. =25
Méthode 1 :
public class Stweek { static private String startdate = null; static private String totalweek = null; synchronized static public void loads(){ if(startdate == null || totalweek == null) { FileInputStream is = null; Properties dbProps = new Properties(); try { is = new FileInputStream(filepath); dbProps.load(is); startdate = dbProps.getProperty("startdate"); totalweek = dbProps.getProperty("totalweek"); } catch (Exception e) { System.err.println("不能读取属性文件. " + "请确保db.properties在CLASSPATH指定的路径中"); } } } public static String getStartdate() { if(tartdate==null) loads(); return startdate; } public static String getTotalweek() { if(startdate==null) loads(); return totalweek; } }
Bien que la méthode ci-dessus puisse également obtenir le contenu du fichier de configuration, sa plus grande limitation est Le problème est le positionnement du chemin du fichier (c'est-à-dire le problème de valeur de chemin de fichier dans le code). Lors de l'utilisation du positionnement absolu, si vous déplacez le projet vers une autre lettre de lecteur à exécuter, vous devez modifier le code source, sinon une erreur sera signalée, mais si vous utilisez le chemin relatif, lorsque le Stweek la classe est déplacée vers un autre package, le code source doit encore être modifié, sinon une erreur sera signalée, donc cette méthode est trop limitée et pas bonne. La méthode 2 suivante peut résoudre ce problème, mais elle a encore quelques problèmes<🎜. >
Méthode 2 :public class Stweek { InputStream is = null; Properties dbProps = null; public Stweek() { // TODO Auto-generated constructor stub is = getClass().getResourceAsStream("/date.properties"); dbProps = new Properties(); try { dbProps.load(is); } catch (Exception e) { System.err.println("不能读取属性文件. " + "请确保db.properties在CLASSPATH指定的路径中"); } } public String getStartdate() { String sd = null; sd = dbProps.getProperty("startdate"); return sd; } public String getTotalweek() { String totalweek=null; totalweek = dbProps.getProperty("totalweek"); return totalweek; } }
import java.io.InputStream; import java.util.Properties; public class Stweek { static private String startdate = null; static private String totalweek = null; static{ loads(); } synchronized static public void loads(){ if(startdate == null || totalweek == null) { InputStream is = Stweek.class.getResourceAsStream("/date.properties"); Properties dbProps = new Properties(); try { dbProps.load(is); startdate = dbProps.getProperty("startdate"); totalweek = dbProps.getProperty("totalweek"); } catch (Exception e) { System.err.println("不能读取属性文件. " + "请确保db.properties在CLASSPATH指定的路径中"); } } } public static String getStartdate() { if(startdate==null) loads(); return startdate; } public static String getTotalweek() { if(startdate==null) loads(); return totalweek; } }