技术点之数据存储
很多时候我们需要存储配置文件或者存储和读取一些用户数据,还有一些共享文件数据。和存储一些大型文件。
第一File
最开始我想的是使用创建一个文件用于存储File即常说的文件(I/O)存储方法,常用语存储大数量的数据,但是缺点是更新数据将是一件困难的事情。
FILENAME="testpath.txt";
private String read() { try { FileInputStream inputStream = openFileInput(FILENAME); byte[] b = new byte[inputStream.available()]; inputStream.read(b); return new String(b); } catch (Exception e) { } return null; } private void write(String content) { try { FileOutputStream fos = openFileOutput(FILENAME, MODE_APPEND); fos.write(content.getBytes()); fos.close(); } catch (Exception e) { } }通过file方式进行文件存储,一般存储大数据量的文件,比方说音频文件,视频文件等。
public static void SaveConfig1(Context context, Music music) {SharedPreferences share = context.getSharedPreferences("music",Context.MODE_WORLD_WRITEABLE);Editor editor = share.edit();editor.putString("music_path", music.Music_Path);editor.putString("music_name", music.Music_Name);editor.commit();}public static Music LoadConfig1(Context context) {SharedPreferences share = context.getSharedPreferences("music",Context.MODE_WORLD_WRITEABLE);Music music = new Music();music.Music_Path = share.getString("music_path", "无");music.Music_Name = share.getString("music_name", "无");return music;}
Class Music{ private String Music_path =""; private String Music_name =""; public void SetMusic_path(String path){ this.Music_path = path; }public String GetMusic_path(){return this.Music_path;}public String SetMusic_name(String name){this.Music_name = name;}public String GetMusic_name(){return Music_name;}}
Class MusicFind extends Activity{ SaveConfig1(getContext,music); ...}
Class MusicPlay{Music musics=null;musics=LoadConfig1(getContext);...}文件music存储的位置是在/date/data/项目名称/music下。一般使用SharedPreferences进行存储配置数据。如用户的一些软件特性设置。
SQLiteDatabase db = this.openOrCreateDatabase("test_db.db", Context.MODE_PRIVATE, null); SQLiteDatabase db2 = SQLiteDatabase.openOrCreateDatabase("/data/data/com.test/databases/test_db2.db3", null);
db.execSQL("create table tab(_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL)");
ContentValues values = new ContentValues(); for(int i=0;i<10;i++){ values.put("name", "test" + i); db.insert("tab", "_id", values); }
Cursor c = db.query("tab", null, null, null, null, null, null); c.moveToFirst(); while(!c.isAfterLast()){ int index = c.getColumnIndex("name"); Log.d("SQLite", c.getString(index)); c.moveToNext(); } c = db.rawQuery("select * from tab", null); c.moveToFirst(); while(!c.isAfterLast()){ int index = c.getColumnIndex("name"); Log.d("SQLite", c.getString(index)); c.moveToNext();}