プロパティは、プロパティのコレクションを表す Java のクラスで、通常は構成ファイルの読み取りと書き込みに使用されます。Hashtable クラスを継承し、Map インターフェイスを実装します。
Properties オブジェクトの各プロパティはキーと値のペアであり、キーと値は両方とも文字列型です。プロパティのコレクションは、Properties オブジェクトを使用して読み取り、書き込み、操作できます。
Properties オブジェクトを操作するための一般的なメソッドをいくつか示します。
- 属性を追加します。
- setProperty(String key, String value): キーと値のペアを Properties オブジェクトに追加します。
- put(Object key, Object value): setProperty() メソッドと同じですが、パラメータの型は Object です。
- プロパティを取得します。
- getProperty(String key): キーに従って対応する値を取得します。
- getProperty(String key, String defaultValue): キーに応じて対応する値を取得します。キーが存在しない場合は、デフォルト値を返します。
- トラバースのプロパティ:
- propertyNames(): すべてのキーの名前を含む列挙オブジェクトを返します。
- entrySet(): キーと値のペアを含む Set コレクションを返します。
- 属性をロードして保存します。
- load(InputStream inputStream): 入力ストリームからプロパティを読み込みます。
- store(OutputStream OutputStream, String comments): 属性を出力ストリームに書き込みます。
注: 実際のアプリケーションでは、発生する可能性のある IOException を処理し、ストリーム オブジェクトを適切に閉じる必要があります。
ちょっとした知識の拡張:
IOException 例外は Java の標準例外クラスであり、java.io パッケージに属します。IOException は、入力または出力操作中に発生した例外状態を表します。
Java の入出力操作では、ファイルが存在しない、ファイルの読み取りまたは書き込みができない、ネットワーク接続の問題など、さまざまなエラーや例外が発生する可能性があります。これらの異常な状態は IOException で表すことができます。
IOException は、Exception クラスのサブクラスであり、Exception の共通メソッドとプロパティを継承します。ファイル、ネットワーク接続、入力ストリーム、出力ストリームを処理していると、IOException をキャッチして処理する必要がある状況に遭遇することがあります。
一般的な IOException とその意味をいくつか示します。
- FileNotFoundException: ファイルが存在しないか、アクセスできません。
- EOFException: データの読み取り中にファイルの終わりに達しました。
- SocketException: 接続切断やタイムアウトなど、ネットワークソケットに問題があります。
- IOException の他のサブクラスには、EOFException、InterruptedIOException などが含まれます。
IOException を処理する場合、通常、try-catch ブロックを使用して例外をキャプチャして処理し、プログラムが発生する可能性のある例外を正しく処理して、プログラムの堅牢性と信頼性を確保します。
コード例:
import java.util.*;
public class myClass {
public static void main(String[] args) {
Properties p = new Properties();
// 设置属性的键值对
p.setProperty("Background-color", "red");
p.setProperty("Font-size", "14px");
p.setProperty("Language", "chinese");
p.setProperty("Theme", "dark");
// 获取所有属性的键的枚举对象
Enumeration<Object> keys = p.keys();
while (keys.hasMoreElements()) {
// 获取当前键和对应的值
String key = (String) keys.nextElement();
String value = p.getProperty(key);
// 打印当前键值对的信息
System.out.println("Key: " + key);
System.out.println("Value: " + value);
// 根据特定条件执行逻辑
if (key.equals("Theme")) {
System.out.println("这是当前主题.");
}
System.out.println("----------------------------------");
}
}
}
操作結果:
Key: Language
Value: chinese
----------------------------------
Key: Theme
Value: dark
这是当前主题.
----------------------------------
Key: Background-color
Value: red
----------------------------------
Key: Font-size
Value: 14px
----------------------------------
ちょっとした知識の拡張:
Enumeration インターフェイスは、コレクションおよびシーケンス (リスト、ベクトルなど) 内の要素を走査するための Java のインターフェイスです。hasMoreElements() と nextElement() という 2 つのメソッドが定義されています。
- hasMoreElements(): 列挙オブジェクトにさらに要素があるかどうかを確認するために使用されます。存在する場合は true を返し、存在しない場合は false を返します。
- nextElement(): 列挙オブジェクト内の次の要素を取得するために使用されます。オブジェクトを返すので、実際の状況に応じて型変換を行う必要があります。
Enumeration インターフェイスは、イテレータの初期形式として Java 1.0 に導入されました。その後、Java 2 (JDK 1.2) では、より強力なイテレータ インターフェイスである Iterator が導入され、より多くの操作と機能が提供されるため、Enumeration の代わりに Iterator を使用することが推奨されました。ただし、下位互換性のために、Enumeration は引き続き標準ライブラリに保持されており、特定の場合に引き続き使用されます。
注: Java 5 (JDK 1.5) 以降では、foreach ループ構文が導入され、コレクションを直接走査することがより便利かつ簡潔になり、明示的に Enumeration または Iterator を使用する必要がなくなりました。