5

いくつかのプロパティファイルをロードしている間、人々は異なるアプローチに従っているので、私は上記の方法を使用して混乱しました...

Properties prop 
 = new Properties(new FileInputStream(new File("<path of the properties file>"));

使用しているものはほとんどありません。

Properties prop 
 = new Properties(getClass().getResourceAsStream("<path of the properties file>"));

いつ使用するのですか?

4

4 に答える 4

11

getResourceAsStream指定されたファイル/リソースのクラスパスを検索しInputStreams、JAR内からリソースを提供することもできます。

したがって、プロパティが物理ファイルシステムの一部のフォルダー(ユーザーフォルダーなど)に存在する場合はを使用FileInputStreamし、ファイルがクラスパスに埋め込まれている場合(JAR内のリソースなど)はを使用しますgetResourceAsStream

于 2012-04-20T13:31:15.197 に答える
2

ファイルシステムからファイルを読み取るときは、相対パスまたは絶対パスを使用してFileInputStream(File())を使用します。

プログラムがjarとして配布され、そのjar内にあるファイルをロードする必要がある場合は、getResourceAsStream()を使用する必要があります。これにより、クラスパスでファイルが検索され、パスはクラスパスからの相対パスになります。

于 2012-04-20T13:35:34.137 に答える
0

ファイルの場所が環境間で変更されないことが100%確実である場合は、最初のアプローチを使用できます。これは、これらのディレクトリパスがすべての環境で作成されていることを確認するための操作が頭上にあることを意味します。反対に、jarを開かずにプロパティファイルを更新できる柔軟性があります。

2番目のアプローチは、クラスパスから読み取るため、非常に移植性があります。ただし、プロパティが更新されるたびにjarファイルを再バンドルするという欠点があります。

したがって、基本的にはユースケースによって異なります。

于 2012-04-20T13:31:12.357 に答える