Vì vậy, bạn muốn coi .properties
tệp của mình trên cùng một thư mục là jar chính / runnable như một tệp chứ không phải là tài nguyên của jar chính / runnable. Trong trường hợp đó, giải pháp của riêng tôi như sau:
Điều đầu tiên trước tiên: kiến trúc tệp chương trình của bạn sẽ như thế này (giả sử chương trình chính của bạn là main.jar và tệp thuộc tính chính của nó là main.properies):
./ - the root of your program
|__ main.jar
|__ main.properties
Với kiến trúc này, bạn có thể sửa đổi bất kỳ thuộc tính nào trong tệp main.properations bằng bất kỳ trình soạn thảo văn bản nào trước hoặc trong khi main.jar của bạn đang chạy (tùy thuộc vào trạng thái hiện tại của chương trình) vì đây chỉ là tệp dựa trên văn bản. Ví dụ: tệp main.properIES của bạn có thể chứa:
app.version=1.0.0.0
app.name=Hello
Vì vậy, khi bạn chạy chương trình chính của mình từ thư mục gốc / cơ sở, thông thường bạn sẽ chạy nó như thế này:
java -jar ./main.jar
hoặc, ngay lập tức:
java -jar main.jar
Trong tệp main.jar của bạn, bạn cần tạo một vài phương thức tiện ích cho mọi thuộc tính được tìm thấy trong tệp main.properIES của bạn; giả sử app.version
tài sản sẽ có getAppVersion()
phương thức như sau:
/**
* Gets the app.version property value from
* the ./main.properties file of the base folder
*
* @return app.version string
* @throws IOException
*/
import java.util.Properties;
public static String getAppVersion() throws IOException{
String versionString = null;
//to load application's properties, we use this class
Properties mainProperties = new Properties();
FileInputStream file;
//the base folder is ./, the root of the main.properties file
String path = "./main.properties";
//load the file handle for main.properties
file = new FileInputStream(path);
//load all the properties from this file
mainProperties.load(file);
//we have loaded the properties, so close the file handle
file.close();
//retrieve the property we are intrested, the app.version
versionString = mainProperties.getProperty("app.version");
return versionString;
}
Trong bất kỳ phần nào của chương trình chính cần app.version
giá trị, chúng tôi gọi phương thức của nó như sau:
String version = null;
try{
version = getAppVersion();
}
catch (IOException ioe){
ioe.printStackTrace();
}
user.home
. Khi kiểm tra tệp, trước tiên hãy kiểm tra sự tồn tại của một tệp bị thay đổi trên hệ thống tệp và nếu nó không tồn tại, hãy tải tệp mặc định. " BTW "Tôi không muốn .." Những gì bạn muốn ít quan trọng hơn những gì hoạt động và thực tế. Lưu trữ ứng dụng. cài đặt trong thư mục ứng dụng bị cả Oracle & MS (và có thể là những người khác) không khuyến khích.