ホームページ  >  記事  >  Java  >  Javaでプロパティ設定ファイルを読み取る方法

Javaでプロパティ設定ファイルを読み取る方法

高洛峰
高洛峰オリジナル
2017-01-12 10:36:091456ブラウズ

この記事の例では、Java でプロパティ設定ファイルを読み取る方法を説明します。皆さんの参考に共有してください。具体的な分析は次のとおりです。

過去 2 日間、私は Java プロジェクトに取り組み、プロパティ ファイルを使用して情報を探しましたが、長い間、読み取りを可能にする満足のいく方法が見つかりませんでした。属性値を取得するには、次の 3 つの方法があり、最良の結果が得られるように段階的に最適化されています。例として、ファイルは src ディレクトリに配置されます。ファイルの内容は次のとおりです。

startdate=2011 -02-07
totalweek=25

方法 1:

public class Stweek {
 static private String startdate = null;
 static private String totalweek = null;
 synchronized static public void loads(){
  if(startdate == null || totalweek == null)
  {
   FileInputStream is = null;
   Properties dbProps = new Properties();
   try {
    is = new FileInputStream(filepath); 
    dbProps.load(is);
    startdate = dbProps.getProperty("startdate");
    totalweek = dbProps.getProperty("totalweek");
   }
   catch (Exception e) {
    System.err.println("不能读取属性文件. " +
    "请确保db.properties在CLASSPATH指定的路径中");
   }
  }
 }
 public static String getStartdate() {
  if(tartdate==null)
   loads();
   return startdate;
 }
 public static String getTotalweek() {
  if(startdate==null)
   loads();
   return totalweek;
 }
}

ただし、上記の方法でも設定ファイルの内容を取得できます。最大の問題は、ファイル パスの配置 (つまり、コード内のファイル パス値の問題) です。絶対配置中にプロジェクトを別のドライブ文字に移動して実行する場合は、ソース コードを変更する必要があります。それ以外の場合は、エラーが報告されます。ただし、相対パスを使用する場合は、Stweek クラスを別のパッケージに移動するときに、やはりソース コードを変更する必要があります。そうしないと、この方法は制限されすぎます。次の方法 2 はこの問題を解決できますが、まだいくつかの問題があります。この方法の利点は、構成ファイルの絶対パスを指定する必要がないことです。 Stweek クラスを別のパッケージに入れても、プロジェクト全体を別のドライブ文字に移動しても、コードは引き続き正常に実行でき、ファイルが見つからないという問題は発生しません。ただし、この方法には依然として大きな欠陥があります。多くの場合、設定ファイルをメモリにキャッシュできるようにして、読み取られるたびにハードディスクにアクセスする必要がないようにします (外部メモリへのアクセスは時間がかかりすぎます)。このため、静的変数と静的変数を使用することを望んでいます。 getClass().getResourceAsStream("/date.properties"); メソッドで変数をキャッシュして取得し、同時にこれらの値の動的読み込み (ロード) を実行できる場合、問題が発生します。コンストラクター (自分でテストできます)、動的にこのメソッドはロードでは使用できません。どうすればよいでしょうか。3 番目のメソッドを見てみましょう

メソッド 3:

public class Stweek {
 InputStream is = null;
 Properties dbProps = null;
 public Stweek() {
  // TODO Auto-generated constructor stub
  is = getClass().getResourceAsStream("/date.properties");
  dbProps = new Properties();
  try {
   dbProps.load(is);
  }
  catch (Exception e) {
   System.err.println("不能读取属性文件. " +
   "请确保db.properties在CLASSPATH指定的路径中");
  }
 }
 public String getStartdate()
 {
  String sd = null;
  sd = dbProps.getProperty("startdate");
  return sd;
 }
 public String getTotalweek()
 {
  String totalweek=null;
  totalweek = dbProps.getProperty("totalweek");
  return totalweek;
 }
}

このメソッドは構成ファイルの内容をキャッシュするだけではありません。ですが、設定ファイルの内容も自動的にメモリにロードされます。手動ロード プロセスを考慮する必要はまったくありません。Stweek.getStartdate() を使用する必要がある場合にのみ直接呼び出す必要があります。は静的メソッドなので、事前にオブジェクトを作成する必要さえありません)。このように、メモリ内にキャッシュがある場合、関数はメモリ内のデータを直接読み取り、時間を節約します。キャッシュはありません。心配しないでください。ユーザーは、その関数がどのように実装されているかを知る必要はありません。必要な値を取得するために関数を直接呼び出すことができることだけを知っていれば十分です。

この記事が皆さんの Java プログラミングに役立つことを願っています。

Java でプロパティ設定ファイルを読み取る方法に関するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。