プロパティ リストには、別のプロパティ リストを「デフォルト値」として含めることができます。元のプロパティ リストでプロパティ キーが見つからない場合は、2 番目のプロパティ リストが検索されます。
Properties は Hashtable から継承されるため、put メソッドと putAll メソッドを Properties オブジェクトに適用できます。ただし、これら 2 つのメソッドは、呼び出し元がキーまたは値が文字列ではない項目を挿入できるため、お勧めできません。代わりに、setProperty メソッドを使用してください。 「安全でない」Properties オブジェクト (つまり、文字列以外のキーまたは値を含む) に対して store メソッドまたは save メソッドが呼び出された場合、呼び出しは失敗します。同様に、propertyNames または list メソッドが「安全でない」Properties オブジェクト (つまり、非 String キーを含む) で呼び出された場合、呼び出しは失敗します。
プロパティ ファイルは JAVA アプリケーションで表示されることが多く、特に重要な種類のファイルでもあります。アプリケーションの一部の情報を設定するために使用されますが、この情報は通常、データベース ファイルを使用して保存する必要はなく、ファイル経由で直接保存する場合は一般的なテキスト ファイルを使用します。保存して保存するのはあまり便利ではありませんが、プロパティ ファイルとして保存されている場合は別です。JAVA パッケージには、プロパティ ファイルを操作するための特別なクラスがあります。 。このクラスは java.uitl.Properties クラスです。Properties クラスはコレクション クラスであるため、Properties はコレクション内のプロパティの読み取りと書き込みを行います。
注: 次のコードは、スローされた例外をキャプチャしません。プログラムを作成するときは、キャプチャされた例外を処理することに注意する必要があります。
Properties クラスは Hashtable クラスを継承し、キー値に応じた格納方法を採用しています。Properties クラスを使用してプロパティ ファイルを管理すると、どのような利便性が得られますか。 Properties クラスには、Properties 属性ファイルを読み書きするための特別な読み取りメソッドと書き込みメソッドがあります。読み取りと書き込みの形式を気にする必要はありません。Properties クラスに読み取りと書き込みのストリームを提供するだけです。プロパティ ファイルの読み取りと書き込みに使用されるプロパティ メソッドは次のとおりです。
次のようにコードをコピーします。
//属性ファイルストリームを読み込むメソッド
public voidload(InputStream inStream) は IOException {} をスローします
//属性ファイルストリームを書き込むメソッド
public void store(OutputStream out, String comments) は IOException {} をスローします
まず、プロパティ ファイルからプロパティを読み取る方法を見てみましょう。
次の内容を含む prop.properties という名前の新しいプロパティ ファイルを作成したとします。
次のようにコードをコピーします。
サイト名=abcjava
siteurl=www.abcjava.com
最初に行う必要があるのは、ファイルを Properties クラス オブジェクトに読み取ることです。load のパラメーターの 1 つは InputStream であるため、InputStream サブクラス FileInputStream を使用して、プロパティ ファイルを Properties オブジェクトに読み取ることができます。 FileInputStream(String name) コンストラクターを使用します。
次のようにコードをコピーします。
Properties prop = new Properties();//プロパティ コレクション オブジェクト
FileInputStream fis = new FileInputStream("prop.properties");//プロパティ ファイル ストリーム
prop.load(fis);//プロパティ ファイル ストリームを Properties オブジェクトにロードします
プロパティ ファイルの読み取り方法がわかったら、次に行うべき非常に重要な作業がもう 1 つあります。それは、プロパティ ファイルを変更して新しいプロパティを追加することです。ここでは、パブリック void ストア (OutputStream out、String comments) メソッドを使用します。プロパティ コレクション OutputStream ストリームに対しては、InputStream ストリームと同様に、そのサブクラス FileOutputStream (文字列名) がここでも使用されるため、ここでは詳細を説明しません。
プロパティ コレクションをファイルに保存する前に、プロパティ コレクションを変更して新しいプロパティを追加する方法がもう 1 つあります。ここで使用するメソッドの 1 つは setProperty(String key, String) です。 value)、このメソッドは、指定されたキーが属性コレクションに存在する場合にキーの値を変更し、存在しない場合は新しいキーを作成しますが、これもキーと値の関係によって保存されます。 Hashtable 以降、Hashtable の put メソッドと putAll メソッドを使用して保存することもできますが、これら 2 つのメソッドの使用は、呼び出し元がキーまたは値が文字列ではない項目を挿入できるため、使用しないことを強くお勧めします。代わりに、setProperty メソッドを使用してください。 「危険にさらされている」(つまり、文字列以外のキーまたは値が含まれている) Properties オブジェクトに対して store メソッドまたは save メソッドが呼び出された場合、呼び出しは失敗します。それでは、属性を変更、追加、保存する手順を見てみましょう。
次のようにコードをコピーします。
//サイト名の属性値を変更する
prop.setProperty("サイト名", "ボックスコード");
//新しい属性スタジオを追加します
prop.setProperty("スタジオ", "Boxcode スタジオ");
//ファイル出力ストリーム
FileOutputStream fos = new FileOutputStream("prop.properties");
//Properties コレクションをストリームに保存します
prop.store(fos, "著作権 (c) Boxcode Studio");
fos.close();//ストリームを閉じる
次にプログラム全体のソースコードを示します。
次のようにコードをコピーします。
java.io.FileInputStreamをインポートします。
java.io.FileOutputStreamをインポートします。
java.util.Propertiesをインポートします。
パブリック クラス PropertyEditor {
public static void main(String[] args) throws Exception {
プロパティ prop = new Properties() // プロパティ コレクション オブジェクト
FileInputStream fis = new FileInputStream("prop.properties");//プロパティ ファイル入力ストリーム
prop.load(fis);//プロパティ ファイル ストリームを Properties オブジェクトにロードします
fis.close(); // ストリームを閉じる
// 属性値を取得します。サイト名はファイルに定義されています
System.out.println("プロパティ値の取得: sitename=" + prop.getProperty("sitename"));
// 属性値を取得します。ファイルに国が定義されていません。このプログラムではデフォルト値が返されますが、属性ファイルは変更されません。
System.out.println("プロパティ値の取得: country=" + prop.getProperty("country", "中国"));
// サイト名の属性値を変更します
prop.setProperty("サイト名", "ボックスコード");
//新しい属性スタジオを追加します
prop.setProperty("スタジオ", "Boxcode スタジオ");
//ファイル出力ストリーム
FileOutputStream fos = new FileOutputStream("prop.properties");
// Properties コレクションをストリームに保存します
prop.store(fos, "著作権 (c) Boxcode Studio");
fos.close();//ストリームを閉じる
}
}