在内部存储中保存持久性文本文件

时间:2013-02-25 12:52:21

标签: android

这个问题他或许更想要一些建议如何以最佳方式保存一些数据。我正在做一个应用程序,通过保存图像的文件路径和所选联系人,通过设备中的ContactsContract的联系人标记设备中的图像,通过联系,我想这足以保存ID或名称那个联系人?

我需要一些建议,我应该如何使用FileOutputStream来编写这些数据。我应该,并且可以为文件中的每一行保存像“filepath,id”这样的字符串,或者最好的方法是什么?我还需要搜索文件路径和联系人是否已经在文件中,以及能够将多个联系人标记为图像。首先,我想我可以为每个图像使用一个文件,并添加所有用它标记的联系人,但这可能不是一个好方法吗?!

提供一些建议!

编辑:

如果我使用共享首选项,那么我可以使用联系人ID作为键,图像路径作为值?然后我可以添加几个具有不同值的唯一ID键?但我想,我不能在一个键上添加多个值?

2 个答案:

答案 0 :(得分:0)

您需要某种结构化数据系统。

你试过SQLite吗? - SQLite似乎对这项工作很有帮助。

CREATE TABLE `contact`('id' INT , 'contact_id' TEXT, 'image_file_path' TEXT, TEXT, PRIMARY KEY('id'))

您搜索功能很简单;

SELECT * FROM contact WHERE contact_id ='1'

我会开始here

答案 1 :(得分:0)

编辑:

您可以通过将联系人详细信息转换为jsonstring并插入sharedPreferences来插入联系人详细信息。

示例:

    JSONObject obj=new JSONObject();
    obj.put("Contactid", 1);
    obj.put("ImagePath", "/sdcard/download/a.png");

String jsonstring=obj.toString();

如果你有多个联系人而不是使用json数组像这样

JSONArray array=new JSONArray("ContactDetails");
for(int i=0;i<noofcontacts;i++)
{
        JSONObject obj=new JSONObject();
        obj.put("Contactid", 1);
        obj.put("ImagePath", "/sdcard/download/a.png");
        array.put(obj);
}
jsonstring= array.toString();

保存SharedPreferences中的联系人详细信息,如

 SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putString("contactDetails", jsonstring);
    editor.commit();

现在获取SharedPreference值

 SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
    String jsoncontactdetails= sharedPreferences.getString("contactDetails", null);

我希望你知道Json Parsing。


在这种情况下,使用数据库是最佳选择。因为很难在内部存储中维护每个文件,并且它也消耗一些处理时间。最好的是联系数据库中联系人的图像路径。