プログラムを作成するとき、いくつかのパラメーターがしばしば変更されますが、この変更は私たちが予測するものではありません。たとえば、データベースを操作するモジュールを開発しました。開発中、ローカルデータベースに接続し、IP、データベース名、テーブル名、データベースホスト、およびその他の情報はローカルです。データを普遍的に操作するモジュールを作成するには、上記の情報をプログラムに記述することはできません。通常、私たちのアプローチは、構成ファイルを使用してそれを解決することです。
さまざまな言語には、独自のサポートされている構成ファイルタイプがあります。たとえば、Python、それは.iniファイルをサポートします。 .iniファイルの読み取りと書き込みをサポートするために内部にconfigparserクラスがあるため、プログラマーはこのクラスが提供する方法に従って.iniファイルを自由に操作できます。 Javaでは、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-Valueペアと呼んでいるものです)キーは私たちのプログラムの変数でなければなりません。値は実際の状況に従って構成されます。
二。 JDKのプロパティクラス
プロパティクラスは、ハッシュテーブルから継承するセルJava.utilに存在し、いくつかの主な方法を提供します。
1。GetProperty(String Key)、指定されたキーを使用してこのプロパティリストのプロパティを検索します。つまり、パラメーターキーを介して、キーに対応する値を取得します。
2。ロード(inputstreamインストラム)、入力ストリームから属性リスト(キーと要素ペア)を読み取ります。指定されたファイル(上記のtest.propertiesファイルなど)をロードして、ファイル内のすべてのキー値ペアを取得します。 GetProperty(String Key)の検索。
3。SetProperty(文字列キー、文字列値)、Call Hashtable Method Put。基本クラスのPUTメソッドを呼び出すことにより、値キー値ペアを設定します。
4.ストア(outputStream out、stringコメント)、このプロパティテーブルにプロパティリスト(キーと要素ペア)を、ロードメソッドを使用してプロパティテーブルにロードするのに適した形式で出力ストリームに書き込みます。負荷方法とは対照的に、この方法は、指定されたファイルにキー値のペアを書き込みます。
5。Clear()、すべてのロードされたすべてのキー価値ペアをクリアします。この方法は、基本クラスで提供されます。
上記の方法を使用すると、.propertiesファイルで操作できます!
3。Java読み取りプロパティファイルの例
プロパティファイルボックスがあり、次のコンテンツがあります。
color = redname = boxlength = 18width = 7heigth = 8
属性値を取得するには、次のコードを使用できます。
inputstream in = null; Properties P = new Properties(); try {in = new BufferedInputStream(new FileInputStream( "box.properties")); p.load(in);} catch(filenotfoundexception e){// todo auto-founderated catch block e.printstacktrace();} catch(ioexception e){// todo auto-eneratedキャッチブロック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-foundated catch block e1.printstacktrace();} catch(ioexception e){// todo auto-fenerated catch block e.printstacktrace();} rb.getKeys(); while(keys.hasmoreElements()){string key =(string)keys.nextelement(); System.out.println(key + ":" + rb.getString(key)); }}ただし、出力順序は元のファイルとは異なります。