JAva propertyプロファイルの使用方法


私たちが普段プログラムを書くとき、いくつかのパラメータはよく変化しますが、このような変化は私たちが予知していません.例えば、私たちは操作データベースのモジュールを開発しました.開発時にローカルのデータベースに接続すると、IP、データベース名、テーブル名、データベースホストなどの情報がローカルになります.この操作データのモジュールに汎用性を持たせるには、情報をプログラムに書くことはできません.通常、プロファイルで解決します.
各言語には、サポートされているプロファイルタイプがあります.例えばPython、彼は支持しています.iniファイル.彼の内部にはConfigParserクラスがあるからだ.iniファイルの読み書きは、このクラスが提供する方法に従ってプログラマーが自由に操作することができる.iniファイル.JavaではJavaがサポートする.propertiesファイルの読み書き.JDK内蔵Java.util.Propertiesクラスは私たちのために操作します.propertiesファイルは便利です.
------------------------------------------------------------------------------
一..propertiesファイルの形式
#サーバ、データベース情報
dbPort = localhost
databaseName = mydb
dbUserName = root
dbPassword = root
#次はデータベーステーブル情報
dbTable = mytable
#以下はサーバ情報
ip = 192.168.0.9
上のファイルでは、ファイル名をtestと仮定します.propertiesファイル.#の最初の動作コメント情報;等号「=」の左側にある私たちはkeyと呼ばれています.等号「=」の右側の私たちはvalueと呼ばれています.(実は私たちがよく言うキー-値ペア)keyは私たちのプログラムの変数であるべきです.valueは実際の状況に基づいて構成されています
二.JDK中のProperties類Properties類は胞Javaに存在する.utilでは、このクラスはHashtableから継承され、いくつかの主要な方法が提供されています.
1.getProperty(String key)は、指定したキーでこの属性リストで属性を検索します.すなわちパラメータkeyによりkeyに対応するvalueが得られる.
2.load(InputStream inStream)は、入力ストリームから属性リスト(キーと要素のペア)を読み込みます.指定したファイル(たとえば、上のtest.propertiesファイル)をマウントすることで、ファイル内のすべてのキー値ペアを取得します.getProperty(String key)で検索します.
3.setProperty(String key,String value)、Hashtableのメソッドputを呼び出します.彼はベースクラスのputメソッドを呼び出すことでキー-値ペアを設定します.
4.store(OutputStreamout,String comments)は、loadメソッドを使用してPropertiesテーブルにロードするのに適したフォーマットで、このPropertiesテーブルのプロパティリスト(キーと要素のペア)を出力ストリームに書き込む.loadメソッドとは逆に、キー値ペアを指定したファイルに書き込みます.
5.clear()は、すべてのマウントされたキー-値ペアをクリアします.このメソッドはベースクラスで提供されます.
以上のいくつかの方法があれば、私たちは正しいです.propertiesファイルが操作されました!
-----------------------------------------------------------------------------
三.コードインスタンス
package configuration;

import Java.io.FileInputStream;
import Java.io.FileNotFoundException;
import Java.io.FileOutputStream;
import Java.io.IOException;
import Java.util.Properties;

/** *//**
*   properties  
* @author Qinya
*
*/
public class Configuration
...{
    private Properties propertie;
    private FileInputStream inputFile;
    private FileOutputStream outputFile;
    
    /** *//**
     *    Configuration 
     */
    public Configuration()
    ...{
        propertie = new Properties();
    }
    
    /** *//**
     *    Configuration 
     * @param filePath            +  
     */
    public Configuration(String filePath)
    ...{
        propertie = new Properties();
        try ...{
            inputFile = new FileInputStream(filePath);
            propertie.load(inputFile);
            inputFile.close();
        } catch (FileNotFoundException ex) ...{
            System.out.println("      --->  !-   :             ");
            ex.printStackTrace();
        } catch (IOException ex) ...{
            System.out.println("    --->  !");
            ex.printStackTrace();
        }
    }//end ReadConfigInfo(...)
    
    /** *//**
     *     ,  key  
     * @param key       
     * @return key  
     */
    public String getValue(String key)
    ...{
        if(propertie.containsKey(key))...{
            String value = propertie.getProperty(key);//        
            return value;
        }
        else 
            return "";
    }//end getValue(...)
    
    /** *//**
     *     ,  key  
     * @param fileName properties     +   
     * @param key       
     * @return key  
     */
    public String getValue(String fileName, String key)
    ...{
        try ...{
            String value = "";
            inputFile = new FileInputStream(fileName);
            propertie.load(inputFile);
            inputFile.close();
            if(propertie.containsKey(key))...{
                value = propertie.getProperty(key);
                return value;
            }else
                return value;
        } catch (FileNotFoundException e) ...{
            e.printStackTrace();
            return "";
        } catch (IOException e) ...{
            e.printStackTrace();
            return "";
        } catch (Exception ex) ...{
            ex.printStackTrace();
            return "";
        }
    }//end getValue(...)
    
    /** *//**
     *   properties      key   
     */
    public void clear()
    ...{
        propertie.clear();
    }//end clear();
    
    /** *//**
     *        key  , key   properties     key   value   ,
     *  key    , key   value
     * @param key      
     * @param value      
     */
    public void setValue(String key, String value)
    ...{
        propertie.setProperty(key, value);
    }//end setValue(...)
    
    /** *//**
     *                  ,          。
     * @param fileName     +    
     * @param description        
     */
    public void saveFile(String fileName, String description)
    ...{
        try ...{
            outputFile = new FileOutputStream(fileName);
            propertie.store(outputFile, description);
            outputFile.close();
        } catch (FileNotFoundException e) ...{
            e.printStackTrace();
        } catch (IOException ioe)...{
            ioe.printStackTrace();
        }
    }//end saveFile(...)
    
    public static void main(String[] args)
    ...{
        Configuration rc = new Configuration(".\config\test.properties");//    
        
        String ip = rc.getValue("ipp");//    properties    
        String host = rc.getValue("host");
        String tab = rc.getValue("tab");
        
        System.out.println("ip = " + ip + "ip-test leng = " + "ip-test".length());//    properties    
        System.out.println("ip's length = " + ip.length());
        System.out.println("host = " + host);
        System.out.println("tab = " + tab);

        Configuration cf = new Configuration();
        String ipp = cf.getValue(".\config\test.properties", "ip");
        System.out.println("ipp = " + ipp);
//        cf.clear();
        cf.setValue("min", "999");
        cf.setValue("max", "1000");
        cf.saveFile(".\config\save.perperties", "test");
        
//        Configuration saveCf = new Configuration();
//        saveCf.setValue("min", "10");
//        saveCf.setValue("max", "1000");
//        saveCf.saveFile(".\config\save.perperties");
        
    }//end main()
    
}//end class ReadConfigInfo

  ==============================================================================
四.まとめは上記の例を通して、Javaでプロファイルを操作するのは非常に簡単であることがわかります.多くの構成情報を必要とするモジュールやシステムでは、専用のクラスをカプセル化して共有する必要があります.最後のmain関数呼び出しで、このクラスの使い方がわかると思います.指摘に足りないので、皆さんにご指導をお願いします.
Java propertiesファイルの操作
----------------------------------------------------
Javaのpropertiesファイルは、主に構成情報を表すプロファイルであり、ファイルタイプは*である.properties、フォーマットはテキストファイル、ファイルの内容はフォーマットが“キー=値”のフォーマットで、propertiesファイルの中で、“#”で注釈をすることができて、propertiesファイルはJavaプログラミングの中で使う地方が多くて、操作はとても便利です.次に、Java propertiesファイルを操作する例を示し、操作方法とpropertiesファイルを示します.ここからpropertiesファイルを読み込んで、読み込んだ値を適用する方法がわかります.propertiesファイルの操作を学ぶ良い例です.
一、propertiesファイル
IcisReport.properties
------------------------------------------------------
#################################
#パフォーマンス評価システムのプロファイル#
#作者:#
#日付:2010年8月14日#
#################################
#
#説明:業務システムTopIcisとレポートシステムIcisReportは分離されている
#異なるサーバに別々に配置することも、同じサービスに配置することもできます.
#器の上;IcisReprotは、独立したWebアプリケーションとして使用できます.
#のサーブレットコンテナまたはJ 2 EEサーバを配備して単独で実行してもよい
#ビジネスシステムのインタフェース呼び出しをビジネスシステムのライブラリとして適用する.
#
#IcisReportのip
IcisReport.server.ip=10.43.96.5
#IcisReportのポート
IcisReport.server.port=8080
#IcisReportのコンテキストパス
IcisReport.contextPath=/IcisReport
------------------------------------------------------
二、propertiesファイルを操作するJava方法
次はpropertiesファイルを操作する方法です.

    /** *//**
     * @return   IcisReport     URL
     */
    private String getIcisReportURL() ...{
        String icisReportURL = ""; // IcisReport     URL
        String icisReportServerIP = ""; // IcisReport    IP
        String icisReportServerPort = ""; // IcisReport        
        String icisReportContextPath = ""; // IcisReport   ContextPath

        Properties prop = new Properties();
        InputStream in;
        try ...{
            in = getClass().getResourceAsStream("/IcisReport.properties");
            prop.load(in);
            Set keyValue = prop.keySet();
            for (Iterator it = keyValue.iterator(); it.hasNext();) ...{
                String key = (String) it.next();
                if (key.equals("IcisReport.server.ip")) ...{
                    icisReportServerIP = (String) prop.get(key);
                } else if (key.equals("IcisReport.server.port")) ...{
                    icisReportServerPort = (String) prop.get(key);
                } else if (key.equals("IcisReport.contextPath")) ...{
                    icisReportContextPath = (String) prop.get(key);
                }
            }
        } catch (Exception e) ...{
            log.error("IO    ,   IcisReport.properties!");
        }

        if (icisReportServerIP.trim().equals("")) ...{
            log
                    .error("       IcisReport.properties  IcisReport.server.ip       !");
        }
        if (icisReportServerPort.trim().equals("")) ...{
            log
                    .error("       IcisReport.properties  IcisReport.server.port       !");
        }
        if (icisReportServerPort.trim().equals("")) ...{
            log
                    .error("       IcisReport.properties  IcisReport.server.port       !");
        }

        icisReportURL = "http://" + icisReportServerIP.trim() + ":"
                + icisReportServerPort.trim() + icisReportContextPath.trim();
        log.info("   icisReportURL=" + icisReportURL);
        return icisReportURL;
    }
まとめ:Javaのpropertiesファイルはclasspathの下に置く必要があります.これにより、classpathについては実際にJavaクラスまたはライブラリの保存パスであり、Javaエンジニアリングではpropertiesはclassファイルの1つに配置されます.Webアプリケーションでは、最も簡単な方法はWebアプリケーションのWEB-INFclassesディレクトリの下に置けばよいか、別のフォルダの下に置けばよいか、classpath環境変数を設定する際に、このフォルダパスをclasspath変数に加える必要があり、これも読み取ることができる.ここで、classpathについて深く理解する必要があります.classpathはシステムで意図的に設定されたシステム環境変数ではありません.WEB-INFclassesも、Javaエンジニアリングのclassファイルディレクトリです.<