Wie lade ich ein Ressourcenpaket aus einer Dateiressource in Java?
Habe ich eine Datei namens mybundle.txt
im c:/temp
-
c:/temp/mybundle.txt
Wie lade ich diese Datei in eine java.util.ResourceBundle
? Die Datei ist eine gültige Ressource-bundle.
Scheint dies nicht zu funktionieren:
java.net.URL resourceURL = null;
String path = "c:/temp/mybundle.txt";
java.io.File fl = new java.io.File(path);
try {
resourceURL = fl.toURI().toURL();
} catch (MalformedURLException e) {
}
URLClassLoader urlLoader = new URLClassLoader(new java.net.URL[]{resourceURL});
java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle( path ,
java.util.Locale.getDefault(), urlLoader );
InformationsquelleAutor der Frage | 2009-07-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Solange Sie deinen Namen resource-bundle-Dateien richtig (mit .Eigenschaften-Erweiterung), dann funktioniert das:
wo "c:\temp" ist der externe Ordner (NICHT im classpath), die das property-Dateien, und "myResource" bezieht sich auf myResource.Eigenschaften, myResource_fr_FR.Eigenschaften, etc.
Kredit http://www.coderanch.com/t/432762/java/java/absolute-path-bundle-file
InformationsquelleAutor der Antwort Forge_7
Wenn Sie sagen, dass es "eine gültige Ressource-bundle" - ist es eine Eigenschaft der Ressource-bundle? Wenn ja, ist der einfachste Weg, es zu laden wahrscheinlich:
InformationsquelleAutor der Antwort Jon Skeet
1) Ändern Sie die Erweiterung, um die Eigenschaften (ex. mybundle.Eigenschaften".)
2) Legen Sie Ihre Datei in ein Gefäß und fügen Sie es Ihrem Klassenpfad befinden.
3) rufen Sie die Eigenschaften mithilfe dieses Codes:
InformationsquelleAutor der Antwort MrPhil
Aus den JavaDocs für
ResourceBundle.getBundle(String baseName)
:Was bedeutet dies im Klartext, dass das Ressourcen-bundle muss sich unter dem Klassenpfad und dass
baseName
sollte das Paket mit dem bundle plus den bundle-Namen, denmybundle
in Ihrem Fall.Weglassen, die Erweiterung und alle lokalen, die einen Teil des bundle-Namen, die JVM zu Sortieren, die für Sie gemäß der Standard-locale - siehe die Dokumentation auf java.util.ResourceBundle für mehr info.
InformationsquelleAutor der Antwort Nick Holt
Für JSF-Anwendung
Bekommen resource-bundle-prop-Dateien aus einer angegebenen Datei-Pfad zu verwenden, Sie in einer JSF-app.
ResourceBundle laden Sie das Paket aus dem Datei Pfad.
basename
Eigenschaft vonloadBundle
tag.<f:loadBundle basename="Message" var="msg" />
Für die grundlegende Implementierung der extended RB bitte siehe Beispiel Beispiel-Benutzerdefinierte Ressource-Bundle
Sonst bekommt das bundle getBundle-Methode, aber Gebietsschema aus anderen Quellen, wie
Locale.getDefault()
die neue (RB) - Klasse kann nicht verlangen, in diesem Fall.InformationsquelleAutor der Antwort noboundaries
Wenn, wie mir, Sie wollte eigentlich zu laden .die properties-Dateien aus Ihrem Dateisystem anstelle der classpath, aber ansonsten halten alle smarts im Zusammenhang Nachschlage, dann tun Sie das folgende:
java.util.ResourceBundle.Control
newBundle()
MethodeIn diesem dummes Beispiel, ich nehme an, Sie haben einen Ordner auf
C:\temp
enthält eine flache Liste ".Eigenschaften" Dateien:}
Beachten Sie auch, dass diese UTF-8 unterstützt, was ich glaube ist nicht standardmäßig unterstützt sonst.
InformationsquelleAutor der Antwort John
Ich würde es vorziehen, zu verwenden, die resourceboundle-Klasse zum laden der Eigenschaften - nur, um es getan in einer Zeile statt 5 Zeilen code, die durch Strom, Eigenschaften, Klasse und load().
Zur info ....
InformationsquelleAutor der Antwort Subba Reddy
Ich habe soeben eine Bibliothek mit Namen Rincl, die nimmt all die Plackerei aus der resource-Datei laden. Ressourcen-Dateien, benannt nach Klassen automatisch gefunden (mit den normalen lokalen Auflösung). Noch besser ist, Ressourcen für die übergeordneten Klassen und interfaces werden automatisch gefunden. Plus es hat alle Arten von Leistungen wie der Umgang mit UTF-8-Eigenschaften von Dateien und Eigenschaften von XML-Dateien transparent.
Lesen Sie auch ein intro oder eine komplette Lektion Internationalisierung mit Rincl.
InformationsquelleAutor der Antwort Garret Wilson
Ich denke, dass Sie möchten, dass die Datei Eltern auf den classpath, nicht die eigentliche Datei.
Versuchen, diese (möglicherweise müssen einige Optimierungen):
InformationsquelleAutor der Antwort
Den Namen der Datei haben sollte .Eigenschaften, die Erweiterung und das Basis-Verzeichnis sollte im classpath. Ansonsten kann es auch sein, in einer jar-Datei, die im classpath
Relativ zu dem Verzeichnis in den classpath-Ressource-bundle kann angegeben werden mit /oder . separator. "." ist bevorzugt.
InformationsquelleAutor der Antwort Angsuman Chakraborty
Wenn Sie wollte Last-message-Dateien für verschiedene Sprachen, benutzen Sie einfach die
geteilt wird.loader=
von catalina.Eigenschaften...
für weitere Informationen, besuchen Sie http://theswarmintelligence.blogspot.com/2012/08/use-resource-bundle-messages-files-out.html
InformationsquelleAutor der Antwort JanaVish
Diese funktioniert bei mir:
InformationsquelleAutor der Antwort sius
InformationsquelleAutor der Antwort SUBZ
InformationsquelleAutor der Antwort JorgeEsteban