私たちが通常プログラムを書くとき、いくつかのパラメーターは頻繁に変更されますが、この変更は私たちが予測するものではありません。たとえば、データベースを操作するためのモジュールを開発した場合、このデータを操作するためのモジュールを汎用化するために、IP、データベース名、テーブル名、データベースのホストなどの情報がローカルのデータベースに接続されます。 , then 上記の情報はプログラムに書き込むことができません。通常、私たちのアプローチは、設定ファイルを使用して問題を解決することです。
各言語には、サポートされる独自の設定ファイルの種類があります。たとえば、Python は .ini ファイルをサポートします。 .ini ファイルの読み書きをサポートする内部 ConfigParser クラスを備えているため、プログラマはこのクラスが提供するメソッドに従って .ini ファイルを自由に操作できます。 Java では、.properties ファイルの読み取りと書き込みがサポートされています。 JDK の組み込み java.util.Properties クラスは、.properties ファイルの操作に便利です。
1. .properties ファイル形式
# 以下为服务器、数据库信息 dbPort = localhost databaseName = mydb dbUserName = root dbPassword = root # 以下为数据库表信息 dbTable = mytable # 以下为服务器信息 ip = 192.168.0.9
上記のファイルでは、ファイル名が test.properties ファイルであると仮定します。このうち # で始まる行をアノテーション情報、等号「=」の左側をキー、等号「=」の右側を値と呼びます。 (実際、これは私たちがよくキーと値のペアと呼ぶものです) key はプログラム内の変数である必要があります。値は実際の状況に応じて設定されます。
2. JDK のプロパティ クラス
Properties クラスは Java.util に存在します。このクラスは、いくつかの主要なメソッドを提供する Hashtable を継承します。 getProperty(String key)、指定されたキーを使用して、このプロパティ リストからプロパティを検索します。つまり、パラメータキーを介して、キーに対応する値が取得されます。
2. load(InputStream inStream) は、入力ストリームからプロパティ (キーと要素のペア) のリストを読み取ります。ファイルをロードして、指定したファイル (上記の test.properties ファイルなど) 内のすべてのキーと値のペアを取得します。 getProperty(String key)による検索の場合。
3. setProperty(String key,String value)、Hashtable メソッド put を呼び出します。基本クラスの put メソッドを呼び出して、キーと値のペアを設定します。
4. store(OutputStream out,String comments) は、この Properties テーブルのプロパティ (キーと要素のペア) のリストを、load メソッドを使用して Properties テーブルにロードするのに適した形式で出力ストリームに書き込みます。ロード メソッドとは対照的に、このメソッドはキーと値のペアを指定されたファイルに書き込みます。
5. clear() は、ロードされたすべてのキーと値のペアをクリアします。このメソッドは基本クラスで提供されます。
上記の方法で.propertiesファイルを操作することができます!
次の内容のプロパティ ファイル box.properties があります:
Color=Red Name=Box Length=18 Width=7 Heigth=8
InputStream in = null; Properties p = new Properties(); try { in = new BufferedInputStream(new FileInputStream("box.properties")); p.load(in); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } Enumeration<Object> keys = p.keys(); while (keys.hasMoreElements()) { String key = (String) keys.nextElement(); System.out.println(key + ":" + p.getProperty(key)); }
または:
InputStream in; ResourceBundle rb = null; try { in = new BufferedInputStream(new FileInputStream("box.properties")); rb = new PropertyResourceBundle(in); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (rb != null) { Enumeration<String> keys = rb.getKeys(); while (keys.hasMoreElements()) { String key = (String) keys.nextElement(); System.out.println(key + ":" + rb.getString(key)); } }