Итак, вы хотите рассматривать ваш файл .properties
в той же папке, что и основной / исполняемый файл, как файл, а не как ресурс основного / исполняемого файла. В этом случае мое собственное решение выглядит следующим образом:
Перво-наперво: архитектура вашего программного файла должна быть такой (при условии, что ваша основная программа - main.jar, а ее файл основных свойств - main.properties):
./ - the root of your program
|__ main.jar
|__ main.properties
С помощью этой архитектуры вы можете изменять любое свойство в файле main.properties с помощью любого текстового редактора до или во время работы вашего main.jar (в зависимости от текущего состояния программы), так как это всего лишь текстовый файл. , Например, ваш файл main.properties может содержать:
app.version=1.0.0.0
app.name=Hello
Итак, когда вы запускаете основную программу из ее корневой / базовой папки, обычно вы запускаете ее так:
java -jar ./main.jar
или сразу же:
java -jar main.jar
В вашем main.jar вам нужно создать несколько служебных методов для каждого свойства, найденного в вашем файле main.properties; скажем, свойство app.version
будет иметь метод getAppVersion()
следующим образом:
/**
* 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;
}
В любой части главной программы, которой требуется значение app.version
, мы вызываем его метод следующим образом:
String version = null;
try{
version = getAppVersion();
}
catch (IOException ioe){
ioe.printStackTrace();
}