2 回答

TA貢獻1844條經驗 獲得超8個贊
由于該文件位于 .JAR 中,因此無法通過 訪問它new File(),但您仍然可以通過以下方式讀取它ClassLoader:
Properties properties = new Properties();
try (InputStream stream = getClass().getResourceAsStream("/res/cfg.txt")) {
properties.load(stream);
}
請注意,JAR 是只讀的。所以這種方法行不通。
如果您想擁有可編輯的配置,您應該將您cfg.txt的 JAR 放在 JAR 之外并從文件系統中讀取它。例如像這樣:
Properties properties = new Properties();
File appPath = new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().toURI()).getParentFile();
try (InputStream stream = new FileInputStream(new File(appPath, "cfg.txt"))) {
properties.load(stream);
}

TA貢獻1784條經驗 獲得超8個贊
您可以在多個位置放置配置選項,并且強大的部署策略將利用以下部分(或全部)技術:
正如我在評論中提到的,將配置文件存儲在相對于用戶主文件夾的眾所周知的位置。這適用于 Windows (
C:\Users\efrisch
)、Linux (/home/efrisch
) 和 Mac (/Users/efrisch
)File f = new File(System.getProperty("user.home"), "my-settings.txt");
讀取環境變量來控制它
File f = new File(System.getenv("DEPLOY_DIR"), "my-settings.txt");
使用Apache ZooKeeper等去中心化服務來存儲您的數據庫設置
使用獨立 JNDI (或部署目標內置的 JNDI)
使用連接池
添加回答
舉報