我确信已被问过数百次,但我无法指出自己正确的方向。
我正在开发一个应用程序,在第一次启动后,生成一个类的实例,该类可以获取并保存用户输入。在第一次启动之后,在每次连续启动时,我想读取同一个实例,或者至少将之前相同的数据加载到新实例中。我该怎么做呢?
根据我的理解,我需要将其保存在内部存储器上生成的文件中,但我不太确定。数据应该随着时间的推移而扩展,所以我不确定数据会变得多大。
感谢您的帮助。
编辑:我想我会更多地扩展我需要的东西......
基本上,我正在研究一种小型机器人,它接受用户输入并将其保存在“大脑”中。我需要做的是将这个“大脑”保存到一个文件中,这样在应用程序的每次启动时,都会加载这个“大脑”。用户输入只是字符串。
答案 0 :(得分:2)
您可以使用Android SharedPreferences类执行此操作,这是在启动之间保存设置的方法。
SharedPreferences appSettings = this.getSharedPreferences("fileName", 0);
SharedPreferences.Editor = appSettings.edit;
appSettings_Edit.putString("saveme", "this will be saved"); //First Parameter, name of the value, second parameter, value of the name
appSettings_Edit.commit(); //This is called to commit the changes to memory.
//This can be called anytime after `commit()`, including in any sequential launches, and it will return the vale of whatever you set.
appSettings.getString("saveme");
如果要保存实际的file
,可以使用BufferedWriter在系统上创建一些硬文件:
BufferedWriter out = new BufferedWriter(new FileWriter(new File(fileName)));
out.write("I am a line of text written in" + fileName);
out.close();
然后,您可以使用BufferedReader:
检索文件的内容List<String> SomeStringListArray = new ArrayList<String>();
BufferedReader in = new BufferedReader(new FileReader(new File(fileName)));
String s;
while ((s = in.readLine()) != null) {
SomeStringListArray.add(s);
}
in.close();
您还可以在Android缓存目录中创建此文件,以便只有您的文件才能访问该文件,方法是将文件名的路径派生自:
this.getChachDir();
this.getExternalCacheDir();
答案 1 :(得分:0)
这在某种程度上取决于您收集的数据类型,但通常情况下,使用SQLite数据库将满足大多数需求。
如果只是用户可以更改的几个值,则SharedPreferences是一个不错的选择。
答案 2 :(得分:0)
如果对象要保存实现Serializable接口,可以使用序列化保存文件。如果您需要代码示例,请告诉我。这是最简单的方法之一。
答案 3 :(得分:0)
保存到文件中是一种可能,但如果数据仅供您的应用程序使用,您可能需要考虑其他选项......
如果数据非常小,您可以使用SharedPreferences
。
对于较大的数据,您可以使用database
。
here解释了您拥有的不同选项(以及一些示例)。