在Android上保存文件

时间:2013-01-30 21:12:01

标签: java android

我确信已被问过数百次,但我无法指出自己正确的方向。

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

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

感谢您的帮助。

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

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

4 个答案:

答案 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解释了您拥有的不同选项(以及一些示例)。