suchen
HeimJavajavaLernprogrammWie Java mit Eigenschaftenressourcendateien umgeht

Wie Java mit Eigenschaftenressourcendateien umgeht

Apr 28, 2023 pm 02:19 PM
javaproperties

In der Java-Sprache wird eine Textdatei mit der Erweiterung .properties als Ressourcendatei verwendet. Das Inhaltsformat dieses Dateityps ähnelt:

#Kommentaranweisung
some_key=some_value

. Zeilen, die mit # beginnen, werden als Kommentarzeilen verwendet und bei der Verarbeitung durch die ResourceBundle-Klasse ignoriert. Die übrigen Zeilen können in der Form „Schlüsselname=Wert“ beschrieben werden.

Die ResourceBundle-Klasse von Java kann Dateien in dieser Form verarbeiten.

Die ResourceBundle-Klasse ist auch sehr einfach zu verwenden. Lassen Sie uns ein Beispiel zur Veranschaulichung verwenden.

Wir gehen davon aus, dass wir die folgenden 2 Eigenschaftendateien haben:

TestProperties.properties   view plainprint?  #key=value     userIdLabel=User Id:      userNameLabel=User Name:     #key=value userIdLabel=User Id:   userNameLabel=User Name:   TestProperties_zh_CN.properties   view plainprint?  #key=value     userIdLabel=用户ID:      userNameLabel=用户名:     #key=value userIdLabel=用户ID:   userNameLabel=用户名:

Möglicherweise stellen Sie fest, dass der Dateiname TestProperties_zh_CN.properties einen _zh_CN-Namen enthält, der tatsächlich für die Lokalisierungsverarbeitung von Ressourcendateien verwendet wird. Was ist Lokalisierung? Lassen Sie uns kurz erklären: Wenn wir das System entwickeln, müssen wir häufig unterschiedliche Schnittstellen für Benutzer in verschiedenen Regionen vorbereiten. Wenn ein System beispielsweise sowohl auf englischsprachige als auch auf chinesische Benutzer ausgerichtet ist, müssen wir zwei Sätze für das System vorbereiten . Die Schnittstelle (einschließlich Nachrichten), ein Satz ist eine englische Schnittstelle und der andere ist eine chinesische Schnittstelle. Abgesehen von den unterschiedlichen Schnittstellen sind die Systemprozesse natürlich identisch. Natürlich ist es für uns unmöglich, zwei unterschiedliche Systeme für sie zu entwickeln. Was sollen wir tun? Dies erfordert eine Lokalisierung der Ressourcen. Mit anderen Worten: Je nach Region oder Sprache des Benutzers werden unterschiedliche Ressourcendateien vorbereitet, sodass unterschiedliche Schnittstellen für unterschiedliche Benutzer vorbereitet werden können, aber die gleiche Systemlogik verwendet wird.

Bei den beiden Dateien oben handelt es sich um zwei verschiedene Ressourcensätze.

Wir verwenden die ResourceBundle-Klasse, um den Code verschiedener Ressourcen zu verarbeiten:

TestProperties.java   view plainprint?  package com.test.properties;          import java.util.Enumeration;     import java.util.Locale;     import java.util.ResourceBundle;          public class TestProperties  {              public static void main(String []args) {     String resourceFile = "com.test.properties.TestProperties";     //创建一个默认的ResourceBundle对象     //ResourceBundle会查找包com.test.properties下的TestProperties.properties的文件     //com.test.properties是资源的包名,它跟普通java类的命名规则完全一样:     //- 区分大小写     //- 扩展名 .properties 省略。就像对于类可以省略掉 .class扩展名一样     //- 资源文件必须位于指定包的路径之下(位于所指定的classpath中)     //另外,对于非西欧字符(比如中日韩文等),需要使用native2ascii命令或类似工具将其转换成ascii码文件格式,否则会显示乱码。     System.out.println("---Default Locale---");     ResourceBundle resource = ResourceBundle.getBundle(resourceFile);          testResourceBundle(resource);          System.out.println("---Locale.SIMPLIFIED_CHINESE---");          //创建一个指定Locale(本地化)的ResourceBundle对象,这里指定为Locale.SIMPLIFIED_CHINESE     //所以ResourceBundle会查找com.test.properties.TestProperties_zh_CN.properties的文件     //     //中文相关的Locale有:     //Locale.SIMPLIFIED_CHINESE : zh_CN     resource = ResourceBundle.getBundle(resourceFile, Locale.SIMPLIFIED_CHINESE);     //Locale.CHINA  : zh_CN     //Locale.CHINESE: zh     testResourceBundle(resource);          //显示     //         }                  private static void testResourceBundle(ResourceBundle resource) {     //取得指定关键字的value值     String userIdLabel = resource.getString("userIdLabel");     System.out.println(userIdLabel);          //取得所有key值     Enumeration enu = resource.getKeys();          System.out.println("keys:");     while(enu.hasMoreElements()) {         System.out.println(enu.nextElement());     }         }     }     package com.test.properties;   import java.util.Enumeration;  import java.util.Locale;  import java.util.ResourceBundle;   public class TestProperties  {       public static void main(String []args) {  String resourceFile = "com.test.properties.TestProperties";  //创建一个默认的ResourceBundle对象  //ResourceBundle会查找包com.test.properties下的TestProperties.properties的文件  //com.test.properties是资源的包名,它跟普通java类的命名规则完全一样:  //- 区分大小写  //- 扩展名 .properties 省略。就像对于类可以省略掉 .class扩展名一样  //- 资源文件必须位于指定包的路径之下(位于所指定的classpath中)  //另外,对于非西欧字符(比如中日韩文等),需要使用native2ascii命令或类似工具将其转换成ascii码文件格式,否则会显示乱码。  System.out.println("---Default Locale---");  ResourceBundle resource = ResourceBundle.getBundle(resourceFile);   testResourceBundle(resource);   System.out.println("---Locale.SIMPLIFIED_CHINESE---");   //创建一个指定Locale(本地化)的ResourceBundle对象,这里指定为Locale.SIMPLIFIED_CHINESE  //所以ResourceBundle会查找com.test.properties.TestProperties_zh_CN.properties的文件  //  //中文相关的Locale有:  //Locale.SIMPLIFIED_CHINESE : zh_CN  resource = ResourceBundle.getBundle(resourceFile, Locale.SIMPLIFIED_CHINESE);  //Locale.CHINA  : zh_CN  //Locale.CHINESE: zh  testResourceBundle(resource);   //显示  //      }            private static void testResourceBundle(ResourceBundle resource) {  //取得指定关键字的value值  String userIdLabel = resource.getString("userIdLabel");  System.out.println(userIdLabel);   //取得所有key值  Enumeration enu = resource.getKeys();   System.out.println("keys:");  while(enu.hasMoreElements()) {      System.out.println(enu.nextElement());  }      }  }

Erklärung:

1 Zum besseren Verständnis haben wir die Erklärung in den Java-Quellcode eingefügt und werden hier nicht näher darauf eingehen.

2. Für die chinesische Ressourcendatei TestProperties_zh_CN.properties müssen Sie den Befehl native2ascii verwenden, um sie in ASCII-Code zu konvertieren. Zum Beispiel:

native2ascii -encoding UTF-8 c:TestProperties_zh_CN.properties c:javacomtestpropertiesTestProperties_zh_CN.properties

Was die detaillierte Verwendung von native2ascii betrifft, werde ich hier nicht näher darauf eingehen.

3. Speichern Sie die oben genannten drei Dateien im Verzeichnis c:javacomtestproperties. Unter ihnen ist TestProperties_zh_CN.properties eine von native2ascii konvertierte Datei.

4, kompilieren und ausführen, es wird auf dem Bildschirm angezeigt:

c:javajavac com.test.properties.TestProperties.java

c:javajava com.test.properties.TestProperties
---Standardgebietsschema-- -
Benutzer-ID:
keys:
userNameLabel
userIdLabel
---Locale.SIMPLIFIED_CHINESE---
Benutzer-ID:
keys:
userNameLabel
userIdLabel

Das obige ist der detaillierte Inhalt vonWie Java mit Eigenschaftenressourcendateien umgeht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Dieser Artikel ist reproduziert unter:亿速云. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Java -Plattform Unabhängigkeit: Unterschiede zwischen BetriebssystemJava -Plattform Unabhängigkeit: Unterschiede zwischen BetriebssystemMay 16, 2025 am 12:18 AM

Es gibt subtile Unterschiede in der Leistung von Java in verschiedenen Betriebssystemen. 1) Die JVM -Implementierungen sind unterschiedlich, z. B. Hotspot und OpenJDK, die die Leistung und die Müllsammlung beeinflussen. 2) Die Dateisystemstruktur und das Pfadabscheider sind unterschiedlich, daher muss sie mit der Java -Standardbibliothek verarbeitet werden. 3) Die unterschiedliche Implementierung von Netzwerkprotokollen beeinflusst die Netzwerkleistung. 4) Das Aussehen und das Verhalten von GUI -Komponenten variieren in verschiedenen Systemen. Durch die Verwendung von Standardbibliotheken und virtuellen Maschinentests können die Auswirkungen dieser Unterschiede reduziert werden und Java -Programme können reibungslos ausgeführt werden.

Die besten Funktionen von Java: Von der objektorientierten Programmierung bis zur SicherheitDie besten Funktionen von Java: Von der objektorientierten Programmierung bis zur SicherheitMay 16, 2025 am 12:15 AM

JavaoffersrobustObject-orientedProgramming (OOP) und Top-NeotchSecurityFeatures.1) Oopinjavaincludesclasses, Objekte, Erbschaft, Polymorphismus und Incapsulation, EnablingflexiBleanDmaintainables.2) Sicherheitsfassungen

Beste Funktionen für JavaScript gegen JavaBeste Funktionen für JavaScript gegen JavaMay 16, 2025 am 12:13 AM

JavaScriptandJavahavedistinctstrengths:JavaScriptexcelsindynamictypingandasynchronousprogramming,whileJavaisrobustwithstrongOOPandtyping.1)JavaScript'sdynamicnatureallowsforrapiddevelopmentandprototyping,withasync/awaitfornon-blockingI/O.2)Java'sOOPf

Java -Plattform -Unabhängigkeit: Leistungen, Einschränkungen und ImplementierungJava -Plattform -Unabhängigkeit: Leistungen, Einschränkungen und ImplementierungMay 16, 2025 am 12:12 AM

JavaachievsplattformindependencethroughthejavavirtualMachine (JVM) und ByteCode.1) thejvMinterpretsBytecode, zuzulassen theSameCodetorunonanyplatformWitHitHitijvm.2) BytecodeCompiledFromjavaSourcedeDiseDiSpleTiNeTiSpleTiseDiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiSpleTiStiform

Java: Plattformunabhängigkeit im wahren WortJava: Plattformunabhängigkeit im wahren WortMay 16, 2025 am 12:07 AM

Java'splattformIndependencemeansapplicationscanrunonanyplatformwithajvm, ermöglicht "writeonce, runanywhere".

JVM Performance gegen andere SprachenJVM Performance gegen andere SprachenMay 14, 2025 am 12:16 AM

JVM'SPERFORMANCEISCORTITITIONWITHOTHOTHERRUNTIMEN, OPFORMENTABALANCEFEED, Sicherheit und Produktivität.1) JVmusesjitCompilationfordynamicoptimierungen.2)

Java -Plattform Unabhängigkeit: Beispiele für den GebrauchJava -Plattform Unabhängigkeit: Beispiele für den GebrauchMay 14, 2025 am 12:14 AM

JavaachievsplattformIndependencethroughthejavavirtualMachine (JVM), Zulassung von CodetorunonanyPlatformWithajvm.1) codiscompiledIntobytecode, NotMachine-spezifischCode.2) bytecodeIsinterpreted bythejvm, ermöglicht, zu ermöglichen

JVM -Architektur: Ein tiefes Tauchgang in die virtuelle Java -MaschineJVM -Architektur: Ein tiefes Tauchgang in die virtuelle Java -MaschineMay 14, 2025 am 12:12 AM

ThejvmisanabstractComputingMachinecrucialForrunningjavaprogramsduToitSplatform-unabhängige Architektur.itincludes: 1) ClassloaderforFoLoading-Klassen, 2) Runtimedataardeatastorage, 3) ExeclectueNeginewitherdinterpreter, Jitcompiler, undgarbaglector

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Nordhold: Fusionssystem, erklärt
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.