这是我在 SettingsActivity.java 文件中的代码的一部分:
public class SettingsActivity extends Activity {
Thread refresh = new Thread() {
@Override
public void run() {
while (!Thread.currentThread().isInterrupted()) {
try {
Config.writeFile();
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
if (new File(MainActivity.ConfigPath).exists()) {
Config.loadFile();
} else {
Config.writeFile();
}
refresh.start();
}
}
这是在我的 Config.java 文件中:
public class Config {
public static void writeFile() {
try {
Properties properties = new Properties();
properties.setProperty("StartOnBoot", String.valueOf(MainActivity.StartOnBoot));
//StartOnBoot is a boolean in the MainActivity.java file
File file = new File("config/app.properties");
file.setWritable(true);
FileOutputStream fileOut = new FileOutputStream(file);
properties.store(fileOut, "Favorite Things");
fileOut.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void loadFile() {
try {
Properties properties = new Properties();
FileInputStream fileIn = new FileInputStream(new File("config/app.properties"));
properties.load(fileIn);
MainActivity.StartOnBoot = Boolean.valueOf(properties.getProperty("StartOnBoot"));
fileIn.close();
System.out.println(properties.getProperty("StartOnBoot"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
This 是我的 Project explorer 窗口的样子
这是logcat 的日志文件中显示的内容:
07-09 16:16:32.416:W / System.err(621):at java.io.FileOutputStream中。(FileOutputStream.java:94)
.properties 文件仍为空。
任何想法如何使其发挥作用?
PS:
-API 10
-Target SDK Version 22
- 我没有为AndroidManifest.xml文件添加任何权限
答案 0 :(得分:0)
要在Android中处理属性,请使用以下类:
public class MyPropertiesHolder {
public static int MODE_CREATE = 0;
public static int MODE_UPDATE = 1;
private Context context;
private String filename;
private Properties properties;
public MyPropertiesHolder(Context context, String filename, int mode) throws IOException {
this.context = context;
this.filename = filename;
this.properties = new Properties();
if(mode != MODE_CREATE) {
FileInputStream inputStream = context.openFileInput(filename);
properties.load(inputStream);
inputStream.close();
}
}
public String getProperty(String key){
return (String) properties.get(key);
}
public void setProperty(String key, String value) {
properties.setProperty(key, value);
}
public void commit() throws IOException {
FileOutputStream outputStream = context.openFileOutput(filename, Context.MODE_PRIVATE);
properties.store(outputStream, "");
outputStream.close();
}
}
这是您使用上述课程的方式(假设您在Activity
中):
创建新的属性文件:
MyPropertiesHolder propHolder = new MyPropertiesHolder(this, "test.properties", MyPropertiesHolder.MODE_CREATE);
propHolder.setProperty("test1", "test1");
propHolder.setProperty("test2", "test2");
propHolder.commit();
更新现有属性文件:
MyPropertiesHolder propHolder2 = new MyPropertiesHolder(this, "test.properties", MyPropertiesHolder.MODE_UPDATE);
String test1 = propHolder2.getProperty("test1");
String test2 = propHolder2.getProperty("test2");
propHolder2.setProperty("test3", "test3");
propHolder2.setProperty("test4", "test4");
propHolder2.commit();
注意:您不会在assets目录中看到此文件。