Les contenus suivants 1 à 4 sont des connaissances connexes collectées en ligne. Pour résumer, ce sont les points de connaissance suivants:
1. La méthode la plus couramment utilisée pour lire les fichiers de propriétés InputStream dans = getClass (). GetResourceAsStream ("ResourceName"); Cette méthode nécessite que le fichier de propriétés et la classe actuelle soient dans le même dossier. Si dans un ensemble différent, vous devez utiliser:
InputStream ins = this.getClass (). GetResourceSStream ("/ cn / zhao / propriétés / testPropertiesPath2.properties");2. Obtenez la méthode de chemin en java
3. Une simple implémentation de l'obtention de chemins
4. Trois façons d'obtenir des fichiers de propriétés en réflexion
1 Les méthodes et réflexions les plus courantes sur l'obtention de fichiers de propriétés en réflexion:
Il existe de nombreuses façons de lire les fichiers de propriétés en Java. Les articles les plus courants sur Internet sont "Six façons de lire les fichiers de propriétés en Java". Cependant, dans les applications Java, la méthode la plus couramment utilisée consiste à l'implémenter via la méthode GetResourceSstream (nom de chaîne) de la classe java.lang.class. Cependant, j'ai vu que de nombreux codes qui lisent les fichiers de propriétés font ceci:
InputStream dans = getClass (). GetResourCeAsStream ("ResourceName"); Il y a un problème ici, c'est-à-dire que cela est omis par défaut lors de l'appel getClass ()! Nous savons tous que cela ne peut pas être utilisé dans les méthodes statiques (statiques) ou les blocs statiques. La raison en est que les méthodes de type statique ou les blocs de code appartiennent à la classe elle-même et n'appartiennent pas à un certain objet. Cela représente lui-même l'objet actuel et l'objet n'est pas initialisé lorsque des méthodes ou des blocs statiques sont appelés.
Le problème est: si je ne veux pas qu'une certaine classe ait un objet, je définirai le constructeur par défaut de cette classe sur privé, et bien sûr je n'écrirai pas d'autres constructeurs communs. Et ma classe est une classe d'outils, qui sont toutes des méthodes et variables statiques. Je veux obtenir des fichiers de propriétés dans des blocs statiques ou des méthodes statiques, et cette méthode ne fonctionnera pas.
Alors que dois-je faire? En fait, cette classe n'est pas utilisée comme ceci. Il a juste besoin d'obtenir un objet de classe, ce qui n'est pas facile -
En prenant l'objet de classe parent de toutes les classes, n'est-il pas pratique et plus sûr d'utiliser Object.class que d'utiliser le vôtre pour écrire la classe elle-même? Haha, voici un exemple pour faciliter la communication.
import java.util.properties; Importer java.io.inputStream; Importer java.io.ioException; / ** * Exemple des propriétés de lecture Fichiers * Fichier: TestProperties.java * Utilisateur: Leizhimin * Date: 2008-2-15 18:38:40 * / public final class TestProperties {private static String Param1; chaîne statique privée Param2; statique {Properties prop = new Properties (); InputStream dans = objet. class .getResourceSStream ("/test.properties"); essayez {prop.load (in); param1 = prop.getProperty ("INITYEARS1") .trim (); param2 = prop.getProperty ("INITYEARS2") .trim (); } catch (ioException e) {e.printStackTrace (); }} / ** * Constructeur privé, aucun objet n'est nécessaire * / TestProperties privées () {} String statique public getParam1 () {return param1; } chaîne statique publique getParam2 () {return param2; } public static void main (String args []) {System.out.println (getParam1 ()); System.out.println (getParam2 ()); }}Résultats en cours:
151
152
Bien sûr, il est toujours acceptable de remplacer object.class par int.class. Haha, tu peux l'essayer.
De plus, si vous lisez le fichier Propriétés dans une méthode ou un bloc statique, il existe une autre méthode la plus sûre, qui est d'obtenir directement l'objet de classe par le nom de la classe. Par exemple, dans cet exemple, il peut être écrit comme TestProperties.class. Ceci est la méthode la plus sûre.
2 Comment obtenir le chemin:
File fileb = new File (this .getClass (). GetResource ("") .getPath ()); Système. out .println ("FileB Path:" + fileb);2.2 Obtenez le nom du projet de la classe actuelle:
Système. out .println ("User.Dir Path:" + System. getProperty ("user.dir"))3. Une simple implémentation Java pour obtenir le chemin
/ ** * Obtenez le chemin absolu du fichier sous le chemin d'accès relatif du projet * * @param parentdir * Le répertoire parent du fichier cible, par exemple, dans le répertoire du projet, il y a des répertoires Lib, Bin et conf, vous devez donc trouver le chemin de la configuration * @param fichier de configuration * String getPath (String parentDir, string filename) {String path = null; String userdir = System.getProperty ("user.dir"); String userdirName = new File (userdir) .getName (); if (userdirname.equalsignorecase ("lib") || userdirname.equalsignorecase ("bin")) {file newf = new file (userdir); File newp = new File (newf.getParent ()); if (filename.trim (). equals ("")) {path = newp.getPath () + file.separator + parentdir; } else {path = newp.getPath () + file.separator + parentdir + file.separator + filename; }} else {if (filename.trim (). equals ("")) {path = userdir + file.separator + parentdir; } else {path = userdir + file.separator + parentdir + file.separator + filename; }} chemin de retour; } 4 Utilisez la réflexion pour obtenir le chemin:
ENPUTSTREAM IPS1 = ÉNUMERATION. Class .getClassLoader () .GetResourCeasStream ("CN / ZHAO / ENUMSTUDY / TESTPORTERTIESPATH1.Properties"); INPUTSTREAM IPS2 = énumération. Class .getResourCeAsStream ("TestPropertiesPath1.Properties"); INPUTSTREAM IPS3 = énumération. Class .getResourCeAsStream ("Properties / TestPropertiesPath2.Properties");Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.