テキストファイルがあります。構成情報があります。このファイルは、いつでもこのファイルの内容を変更できるように、外部に保管する必要があります。実行中は、そこからコンテンツを読み取る必要があります。私は netbeans を使用しています。ClassLoader を使用してみました。ビルド後、dist フォルダーに config_text.txt ファイルがありません。netbeans にライブラリ ファイル (jar) を追加するように、それを行う方法はありますか?
4 に答える
読み方は?ファイルがプロジェクトのルート ディレクトリ (たとえば、build.xml がある場所) にある場合は、次のようにアクセスできますFile f = new File("my file.txt");
が、NB は ist フォルダーに移動しません。
ところで。ビルドはファイルを追加しませんが、libs と jar を dist フォルダーに追加します。たぶん、ant スクリプトを変更してみることができます。こちらもご覧くださいbuild.xml
。
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class ConfigHandler {
private static final String PROPERTIES_FILE = "/home/myConfigFile.properties";
private static final Properties PROPERTIES = new Properties();
static {
loadPropertyFile(PROPERTIES_FILE);
}
private static void loadPropertyFile(final String path) {
InputStream is = null;
try {
is = new FileInputStream(path);
PROPERTIES.load(is);
} catch (IOException e) {
throw new RuntimeException("Failed to load property file", e);
} finally {
if (is != null) {
try {
is.close();
} catch (IOException ex) {
}
}
}
}
public void reLoadPropertyFile() throws IOException {
loadPropertyFile(PROPERTIES_FILE);
}
public static String getProperty(String key) {
return PROPERTIES.getProperty(key);
}
}
コード内の任意の場所で構成値を読み取るには:
String somePropertyValue = ConfigHandler.getProperty("someProperty");
設定ファイルをリロードするには:
ConfigHandler.reLoadPropertyFile();
ファイルをNetBeansプロジェクトディレクトリの「src」フォルダに追加すると、distフォルダと作成したjarの同じ相対位置に自動的に配置されます。とにかく、私はWindows7x64とNetBeans7.1.2を実行しています。たとえば、ファイルを次の場所に配置します。
* NetBeansProjects \ PROJECT_NAME \ src \ PACKAGE_NAME \ config_text.txt
ここにファイルを自動的に配置する必要があります:
* \ NetBeansProjects \ PROJECT_NAME \ build \ classes \ PACKAGE_NAME \ config_text.txt
次に、getResource()メソッドを使用してアクセスできます。
編集:
単に「ビルド」するのではなく、「クリーンアンドビルド」を実行しているということでしょうか。1つ目は、「dist」フォルダー内のすべてを削除してコンテンツを再生成し、2つ目は、Jarを再作成して、他のファイル(config_text.txtなど)をそのまま残します。
user.home
プロパティを使用して構成ファイルを作成することがよくあります。私の場合、ファイルがuser.home
ディレクトリに存在するかどうかを確認します。そうでない場合は、アプリケーションからコピーをエクスポートするか、デフォルト プロパティをファイルに書き込みます。そのアプローチを試してみるのもよいでしょう。ディレクトリを使用するuser.home
と、プラットフォーム間でも一貫性が保たれます。