我在app文件夹中有一个配置文件config.properties
。我在build.gradle
中用于构建配置。
我需要在java代码中读取此文件。但我可以弄清楚我应该使用的path
。我怎样才能在java代码中读取此文件。下面的代码给了我FileNotFoundException
try {
Properties properties = new Properties();
File inputStream=new File("/config.properties");
properties.load(new FileInputStream(inputStream));
return properties.getProperty("BASE_URL");
}catch (IOException e){
e.printStackTrace();
}
我在build.gradle
中使用相同的文件并且运行良好。如下。
defaultConfig {
Properties versionProps = new Properties()
versionProps.load(new FileInputStream(file('config.properties')))
def properties_versionCode = versionProps['VERSION_CODE'].toInteger()
def properties_versionName = versionProps['VERSION_NAME']
def properties_appid= versionProps['APPLICATION_ID']
applicationId properties_appid
minSdkVersion 14
targetSdkVersion 26
versionCode properties_versionCode
versionName properties_versionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
build.gradle
部分工作正常,我可以分配属性。但我需要在java类中读取相同的文件。我应该为File
使用什么路径。
配置文件如下:
VERSION_NAME=1.0.0
VERSION_CODE=1
APPLICATION_ID=com.app.drecula
BASE_URL=https://reqres.in/
答案 0 :(得分:1)
理想情况下,您应将特定于应用程序的文件放在assets文件夹下,并将gradle构建配置和特定于应用程序的配置分开。在assets/configs
文件夹下添加特定于应用程序的配置属性文件。然后你可以按如下方式阅读:
final Properties properties = new Properties();
final AssetManager assetManager = getAssets();
final InputStream inputStream= assetManager.open("configs/config.properties");
properties.load(inputStream);
如果您仍想继续,那么唯一的办法就是将文件放在assets文件夹中,并放在build.gradle
使用
versionProps.load(new FileInputStream(file('/src/main/assets/config/config.properties')))
答案 1 :(得分:1)
好的,让我们回到基础。首先,您在build.gradle
中创建属性,然后使用自定义字段创建buildConfigField
。
productFlavors {
play {
dimension "MyDimension"
Properties versionProps = new Properties()
versionProps.load(new FileInputStream(file('config.properties')))
def properties_versionCode = versionProps['VERSION_CODE'].toInteger()
def properties_versionName = versionProps['VERSION_NAME']
//...
buildConfigField "int", "MY_VERSION_CODE", "$properties_versionCode"
buildConfigField "String", "MY_VERSION_NAME", "\"$properties_versionName\""
}
}
重建项目后,字段将能够从BuildConfig.{FIELD}
进行调用。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//...
Log.d(TAG, "Version Name: " + BuildConfig.MY_VERSION_NAME);
Log.d(TAG, "Version Code: " + BuildConfig.MY_VERSION_CODE);
//...
}
更多信息here。