Android提供五种持久化数据存储的方式:Shared Preferences、Internal Storage、External Storage、SQLite Databases和Network Connection。 一、Shared Preferences一个轻量级的存储类,特别适合用于保存软件配置参数。(是用xml文件存放数据,文件存放在/data/data//shared_prefs目录下) SharedPreferences可以保存的数据类型有:int、boolean、float、long、String、StringSet。 Android数据持久化—SharedPreferences存储 二、Internal Storage通过文件的形式将数据保存到手机内部存储空间中,并且这些文件是私有的,其他程序无法访问。当卸载掉程序之后,这些文件也会被相应移除。读写操作: ①写数据时,调用openFileOutput(String name, int mode)方法获得一个输出流,参数一是输出的文件名而输出文件的路径是系统自定的/data/data/…/files/;参数二是操作模式,主要有两种模式:Context.MODE_PRIVATE,覆盖原有的文件;Context.MODE_APPEND,内容追加到原来的文件上。 FileOutputStream out = null; BufferedWriter writer = null; try{ out = openFileOutput("data", Context.MODE_PRIVATE); writer = new BufferedWriter(new OutputStreamWriter(out)); writer.write(str); }catch (IOException e){ e.printStackTrace(); }finally { try{ if(writer != null) writer.close(); }catch (IOException e){ e.printStackTrace(); } }- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
②读数据时,调用openFileInput(String name)方法获得一个输入流,由于路径由系统自定,所以参数就是要读取数据的文件名。 FileInputStream in = null; BufferedReader reader = null; StringBuilder content = new StringBuilder(); try{ in = openFileInput("data"); reader = new BufferedReader(new InputStreamReader(in)); String line = ""; while((line = reader.readLine()) != null) content.append(line); }catch (IOException e){ e.printStackTrace(); }finally { if(reader != null){ try{ reader.close(); }catch (IOException e){ e.printStackTrace(); } } }- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
三、External Storage1.SDcard数据读写需要注定的先要在Androidmainfest.xml文件中注册新建删除和读写的权限 : <!-- 在SD卡上创建与删除权限 --> <uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS" /> <!-- 向SD卡上写入权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />2.读写的基本流程就是: 2.1 通过Environment类的getExternalStorageState()方法来判断手机是否有SDcard: Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) 2.2 最通过getExternalStorageDirectory()方法来获取文件目录:File file = new File(Environment.getExternalStorageDirectory().getCanonicalPath() + “/test.txt”); 读写的文件都在sdcrad文件夹中 通过File Explorer可以导出来 2.3 其后就和基本IO操作相同了 四、SQLite Databasespublic class MyDatabaseHelper extends SQLiteOpenHelper { public static final String CREATE_TIME = "create table Time(time date)"; private Context myContext; public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); myContext = context; } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_TIME); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }}- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
date = new Date(System.currentTimeMillis()); str = simpleDateFormat.format(date); SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("time",str); db.insert("Time",null,values);SQLiteDatabase db2 = dbHelper.getWritableDatabase(); Cursor cursor = db2.query("Time",null,null, null,null,null,null); if(cursor.moveToFirst()){ do{ String tt = cursor.getString(cursor.getColumnIndex("time")); text4.setText(tt); }while(cursor.moveToNext()); } cursor.close();五、Network Connection
|