Pfad der properties-Datei in java
Ich habe eine property-Datei, die in einem Standard-package und die Klasse, in der ich die properties-Datei auch in den gleichen Standard-Paket. Wenn ich nur den Dateinamen ohne Pfad, erhalte ich die Fehlermeldung. Offensichtlich, dass ist nicht richtig, wie ich sollte irgendeine Art von verweisen Pfad zur tat-Datei. Ich Baue die Anwendung als jar-Datei so, wie gebe ich den Pfad der properties-Datei sollte nach innen gehen, die jar-Datei. Ich bin mit Netbeans IDE.
BEARBEITEN
Properties pro = new Properties();
try {
pro.load(new FileInputStream("pos_config.properties"));
pro.setProperty("pos_id", "2");
pro.setProperty("shop_type", "2");
pro.store(new FileOutputStream("pos_config.properties"), null);
String pos_id = pro.getProperty("pos_id");
if(pos_id.equals("")){
pos_id="0" ;
}
global_variables.station_id = Integer.parseInt(pos_id);
String shop_type = pro.getProperty("shop_type");
if(shop_type.equals("")){
shop_type="0" ;
}
global_variables.shop_type = Integer.parseInt(shop_type);
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
- Poste bitte den code, den Sie verwenden, um Zugriff auf die property-Datei.
- little bunny foo foo: Check mein edit..
- Ich glaube nicht, verwenden Sie netbeans aber wenn du rechts Klick auf die Datei in netbeans müssen Sie nicht so etwas wie
build path > include
- code-review Kommentar: es sieht aus wie Sie Ihren code und die meisten code-Beispiele in den Antworten zu dieser Frage scheitern schließen Sie die input-stream. Dies könnte zu Problemen führen für Sie.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
getClass().getResourceAsStream("foo.properties")
Aber beachten Sie, dass die Verwendung des default-Pakets wird abgeraten (die oben wird mit jedem Paket).
Dein code funktioniert nicht, da die
FileInputStream(..)
nutzt Pfade, die relativ zu der aktuellen Benutzer-Verzeichnis (siehejava.io.File
Dokumentation). So sieht es fürfoo.properties
im/home/usr/
oderc:\documents and settings\usr
. Da Ihr.properties
Datei auf dem Klassenpfad können Sie Lesen ihn als solchen - durch denClass.getResourceAsStream(..)
Methode.Als die anderen angegeben haben, laden Sie es aus dem classpath und nicht als Datei, wenn Sie wollen in der Lage sein, um es zu laden, aus einer jar. Sie möchten die Klasse.getResourceAsStream() - Methode oder die ClassLoader.getResourceAsStream() Methode. Jedoch, mit
getClass().getResourceAsStream("pos_config.properties")
ist gefährlich, da Sie eine Weg aufgelöst, relativ zu einer bestimmten Klasse und einer Unterklasse könnte sich ändern, die Lage, gegen die es gelöst. Daher ist es am sichersten, dem Namen einen absoluten Pfad innerhalb der jar:oder noch besser, verwenden Sie eine Klasse literal statt getClass():
Versuchst du die properties-Datei aus dem aktuellen Arbeitsverzeichnis, oder Sie versuchen, es als Ressource? Es klingt wie Sie verwenden sollten.
laden eine Datei aus dem aktuellen Verzeichnis
Meine Vermutung ist, was Sie wirklich wollen, ist diese.
properties
Referenz, die Sie verwenden können, die nicht-statische Methoden und EigenschaftengetClass().class.getResource("/properties/pos_config.properties")
ich das problem gelöst.