1

我敢肯定这已经被问了数百次,但我就是无法为自己指明正确的方向。

我正在开发一个应用程序,该应用程序在第一次启动后生成一个类的实例,该实例接受并保存用户输入。在第一次启动之后,在每次连续启动时,我都想读取同一个实例,或者至少将之前的相同数据加载到一个新实例中。我该怎么做呢?

据我了解,我需要将其保存在内部存储上生成的文件中,但我不太确定。数据应该随着时间的推移而扩展,所以我不确定数据会变成多大。

感谢您的任何帮助。

编辑:我想我会更多地扩展我需要的东西......

基本上,我正在开发一个小型机器人,它接受用户输入并将其保存在它的“大脑”中。我需要做的就是将这个“大脑”保存到一个文件中,这样每次启动应用程序时,都会加载这个“大脑”。用户输入将只是字符串。

4

4 回答 4

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();
于 2013-01-30T21:15:14.043 回答
0

这在一定程度上取决于您收集的数据类型,但总的来说,使用SQLite数据库将满足大多数需求。

如果只是用户可以更改的几个值,那么SharedPreferences是一个不错的选择。

于 2013-01-30T21:15:05.093 回答
0

如果要保存的对象实现了 Serializable 接口,则可以使用序列化来保存文件。如果您需要代码示例,请告诉我。这是最简单的方法之一。

于 2013-01-30T21:15:10.093 回答
0

保存到文件中是一种可能性,但如果数据仅由您的应用程序使用,您可能需要考虑其他选项......

如果数据很小,您可以使用SharedPreferences.

对于较大的数据,您可以使用database.

此处解释了您拥有的不同选项(带有一些示例)。

于 2013-01-30T21:15:16.123 回答