Android中的数据保存

形式

Android的数据保存分为3种形式:file, SharedPreference, Database

文件

主要思想就是通过Context类中提供的openFileInput和openFileOutput方法,然后利用Java的各种流来进行读写操作。具体来讲,openFileOutput()返回FileOutputStream对象,得到了对象之后就可以通过OutputStreamWriter转换为字符流,然后通过BufferWriter写入字符。注意openFileOutput有两种模式,第一种是MODE_PRIVATE模式是默认模式,如果文件已经存在就覆盖原来的文件。第二种是MODE_APPEND模式,如果已经存在就追加内容

            out = openFileOutput("data", Context.MODE_APPEND);
            writer = new BufferedWriter(new OutputStreamWriter(out));
            writer.write(inputText);

文件默认保存在/data/data/<package name>/files目录下。如果要从该目录下读取:

            //auto check "/data/data/<package name>/files"
            in = openFileInput("data");
            reader = new BufferedReader(new InputStreamReader(in));
            String line = "";
            while ((line = reader.readLine()) != null) {
                content.append(line);
            }

SharedPreferences

SharedPreferences是用键值对来保存数据的。要使用SharedPreferences首先要获得SharedPreferences对象,方法有三种 1, Context类的getSharedPreferences()方法。SharedPreferences存放在/data/data/<package name>/shared_prefs/目录下。有两种操作模式,分别是MODE_PRIVATE和MODE_MULTIPROCESS,前一个表示只有当前的程序可以对这个文件进行读写,后一个表示多个进程可以读写。 2, Activity类的getPreferences()方法。 3, PreferenceManager类中的getDefaultSharedPreferences方法。 得到SharedPreferences对象之后就可以向SharedPreferences存储数据了,分三步:

  1. 调用SharedPreferences对象的edit方法
  2. 通过putBoolean或者putString方法向SharedPreferences添加数据 或者通过getString, getInt, getBoolean等方法可以读取数据
  3. 通过commit()方法将添加的数据提交,完成数据存储的操作

数据库

  1. 创建数据库的时候调用getReadableDatabase()或者getWritableDataBase()方法可以创建数据库,数据库文件存放在/data/data/<package name>/databases下,此时重写的onCreate()方法会得到执行。并可以通过onUpgrade()来更新数据库,比如添加新的表。接下来就可以通过CRUD操作数据库了
  2. 添加数据用insert方法,该方法有三个参数,第一个是表名,第二个是null,第三个是ContentValue对象:
                 ContentValues values = new ContentValues();
                 values.put("name", "The Da Vinci Code");
                 values.put("author", "Dan Brown");
                 values.put("pages", 454);
                 values.put("price", 16.96);
                 db.insert("Book", null, values);
  3. 更新数据更新数据用update方法
                 ContentValues values = new ContentValues();
                 values.put("price", 10.99);
                 db.update("Book", values, "name = ?",
                         new String[] { "The Da Vinci Code" });
  4. 删除数据用delete方法
     db.delete("Book", "pages > ?", new String[] { "500" });
  5. 查询数据用query方法
 SQLiteDatabase db = dbHelper.getWritableDatabase();
             Cursor cursor = db.query("Book", null, null, null, null, null,
                     null);
             if (cursor.moveToFirst()) {
                 do {
                     String name = cursor.getString(cursor
                             .getColumnIndex("name"));
                     String author = cursor.getString(cursor
                             .getColumnIndex("author"));
                     int pages = cursor.getInt(cursor
                             .getColumnIndex("pages"));
                     double price = cursor.getDouble(cursor
                             .getColumnIndex("price"));
                     Log.d("MainActivity", "book name is " + name);
                     Log.d("MainActivity", "book author is " + author);
                     Log.d("MainActivity", "book pages is " + pages);
                     Log.d("MainActivity", "book price is " + price);
                 } while (cursor.moveToNext());
原文地址:https://www.cnblogs.com/dracohan/p/5980731.html