我刚开始使用Android Studio。我不知道在哪里放置我自己的属性文件,因为项目结构中没有assets文件夹。
已发布的代码段在eclipse中运行正常,但在Android Studio中却没有。
代码:
Properties prop = new Properties();
try {
//load a properties file
prop.load(new FileInputStream("app.properties"));
//get the property value and print it out
System.out.println(prop.getProperty("server_address"));
} catch (IOException ex) {
ex.printStackTrace();
}
问题1: 在Android Studio(v0.5.8)中放置我自己的属性文件的位置?
问题2: 我该如何访问它们?
答案 0 :(得分:11)
默认资源文件夹放在src/main/assets
中,如果不存在则创建它。
然后您可以使用以下内容访问该文件:
getBaseContext().getAssets().open("app.properties")
您可以找到有关Gradle Android项目结构here的更多信息。
答案 1 :(得分:6)
在主文件夹中创建一个子文件夹,并将其命名为assets。将所有.properties文件放在此(assets)文件夹中。
<强> SRC-&GT; main-&GT;资产 - &GT; mydetails.properties 强>
您可以使用AssetManager类
访问它// forward
for(std::string::iterator it = str.begin(); it != str.end(); ++it) {
unsigned long int c = (unsigned long int) (*it);
keys.push_back(c);
}
// reverse
for(std::string::reverse_iterator it = str.rbegin(); it != str.rend(); ++it) {
unsigned long int c = (unsigned long int) (*it);
keys.push_back(c);
}
答案 2 :(得分:1)
您可以在主文件夹中创建资产子文件夹,然后在其中插入.properties文件。
然后,创建一个打开并读取文件的类,例如:
public class PropertiesReader {
private Context context;
private Properties properties;
public PropertiesReader(Context context) {
this.context = context;
//creates a new object ‘Properties’
properties = new Properties();
public Properties getProperties(String FileName) {
try {
//access to the folder ‘assets’
AssetManager am = context.getAssets();
//opening the file
InputStream inputStream = am.open(FileName);
//loading of the properties
properties.load(inputStream);
}
catch (IOException e) {
Log.e("PropertiesReader",e.toString());
}
}
return properties;
}
}
有关详细信息,请参阅http://pillsfromtheweb.blogspot.it/2014/09/properties-file-in-android.html
答案 3 :(得分:0)
public static String getProperty(String key, Context context) throws IOException {
try {
Properties properties = new Properties();
AssetManager assetManager = context.getAssets();
InputStream inputStream = assetManager.open("config.properties");
properties.load(inputStream);
return properties.getProperty(key);
}catch (IOException e){
e.fillInStackTrace();
}
return null;
}
文件夹结构: