Ist es möglich, Ressourcenpaketdateien in ein Ressourcenpaket einzubinden?

8

Wir verwenden java.util.ResourceBundle , um Eigenschaftsinformationen zu laden. Unsere Property-Datei ist so groß geworden und wir denken darüber nach, die Master-Property-Datei in mehrere Untermodule aufzuteilen. Ist das möglich?

%Vor%

Lass es mich wissen?

    
Jason 06.01.2011, 11:37
quelle

3 Antworten

12

Zunächst frage ich mich, warum Sie sich für java.util.ResourceBundle über java.util.Properties . Angesichts der Formulierung Ihrer Frage scheint Ihnen die Lokalisierung / Internationalisierung und die Vererbung von Bundle-Dateien egal zu sein.

Mit Properties ist es außerordentlich einfach, da es Map das wiederum eine putAll() Methode zum Zusammenführen einer anderen Karte. Kickoff-Beispiel:

%Vor%

Wenn Sie wirklich darauf bestehen, ResourceBundle zu verwenden, sollten Sie am besten ein benutzerdefiniertes ResourceBundle erstellen, in dem Sie das Laden mit einem benutzerdefinierten Control .

Angenommen, Sie haben den folgenden Eintrag in master.properties , der eine kommaseparierte Zeichenfolge mit Basisnamen der Moduleigenschaftendateien darstellt:

%Vor%

Dann sollte das folgende benutzerdefinierte ResourceBundle Beispiel funktionieren:

%Vor%

(die triviale Ausnahmebehandlung und Lokalisierungsbehandlung wird nicht berücksichtigt, dies liegt bei Ihnen)

Dies kann wie folgt verwendet werden:

%Vor%     
BalusC 06.01.2011, 13:16
quelle
1

Sie können jedoch programmatisch ResourceBundle konstruieren, aber Sie sagen, dass Ihre Datei riesig ist, was dann passiert, wenn sie in den Speicher geladen wird.

update

%Vor%

dann für IN locale

%Vor%     
Jigar Joshi 06.01.2011 11:42
quelle
1

Mehr Denkanstoß als eine getestete Lösung.

XML-Dateien unterstützen Entities , um während des Parsens Text aus anderen Dateien zu verknüpfen. Wenn gesehen, komplexe XML-Dateien, wo diese Technik verwendet wurde, um die Dateien zu modularisieren.

Properties unterstützt jetzt zwei Dateiformate, das allgemeine .properties -Format mit Schlüssel / Wert-Paaren und ein XML-Format. Properties kann zu / von XML-Dateien geladen und gespeichert werden.

ResourceBundle hat eine direkte Unterklasse: PropertyResourceBundle . Es sieht so aus, als ob diese Klasse tatsächlich auf das ältere Schlüssel / Wert-Paar-Format beschränkt ist, aber es könnte auch eine andere Klasse implementieren, wie XMLPropertyResourceBundle , die Eigenschaften aus XML-Dateien lesen kann, wo der entity Trick helfen könnte zu modularisieren diese Dateien.

Wenn das funktioniert, sollte die Umwandlung der vorhandenen Eigenschaftendateien in XML-Eigenschaftendateien einfach sein. Verwenden Sie einfach die Klasse Properties , lesen Sie aus dem Standardformat und speichern Sie sie in XML.

    
Andreas_D 06.01.2011 12:20
quelle

Tags und Links