【发布时间】:2015-07-09 16:35:43
【问题描述】:
这是我的 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 是我的项目浏览器窗口的样子
这是 来自 logcat 的日志文件中显示的内容:
07-09 16:16:32.416: W/System.err(621): 在 java.io.FileOutputStream.(FileOutputStream.java:94)
.properties 文件仍然为空。
任何想法如何使它工作?
PS:
-API 10
-目标 SDK 版本 22
-我没有给AndroidManifest.xml文件添加任何权限
【问题讨论】:
-
您可以尝试将文件放入 assets 文件夹并阅读。检查这个:stackoverflow.com/questions/9544737/read-file-from-assets
-
那么静态和非静态的东西都有问题..
-
那么问题出在哪里?
-
说的太多了……
-
先尝试一个很简单的事情。就像从文本文件中读取单个字符串,然后转到属性文件。
标签: java android properties writefile