1、话,你可以使用这个方法,无需要提供识别的名称。 使用SharedPreferences对象来获取数据非常简单,直接使用相应的getter方法即可 使用SharedPreferences对象来存储数据,大致有如下几步调用edit()方法来得到SharedPreferences.Editor调用相应的put方法值添加进去调用commit来提交保存这些数据使用Shared Preferences-2 向SharedPreferences对象写入数据SharedPreferences sp =getSharedPreferences(SP,Activity.MODE_PRIVATE);SharedPr
2、eferences.Editor editor = sp.edit();editor.putString(param1, sp1);editor.putInt(param2, 222);mit();注意:所有的写入操作应该在一个Editor里面,也就是不要调用多次sp.edit()方法,每调用一次就会创建一个Editor 在获得SharedPreferences对象的时候,需要指定文件创建的模式:MODE_PRIVATE:默认模式,文件只可以被调用该方法的应用程序访问MODE_WORLD_READABLE:赋予所有的应用程序都可以读取该文件MODE_WORLD_WRITEABLE:赋予所有的应
3、用程序都可以写该文件MODE_MULTI_PROCESS:SharedPreference的装载标记,设置它,文件将会在SharedPreference实例被装载到进程的时候检查是否被修改,主要用在一个应用有多个进程的情况。使用Shared Preferences-3 从SharedPreferences对象读取数据SharedPreferences sp =T2.this.getSharedPreferences(String p1 = sp.getString(,int p2 = sp.getInt(,0); SharedPreferences的数据以xml存储在data/data/包名/
4、shared_prefs下面Internal Storage-1 当应用程序被安装到系统中后,其所在的包会有一个文件夹用于存放自己的数据,只有这个应用程序才有对这个文件夹的写入权限,这个私有的文件夹位于Android系统的/data/data/目录下,其他的应用程序都无法向这个文件夹中写入数据。 要读取应用自己的私有文件,就不能直接使用Java I/O的API了,需要使用Activity提供的方法:openFileInput或openFileOutput。 在使用openFileOutput方法的时候,需要指定打开的模式:MODE_APPEND:如果文件已存在就向该文件的末尾继续写入数据,而不
5、是覆盖原来的数据。赋予所有的应用程序对该文件读的权限。赋予所有的应用程序对该文件写的权限。Internal Storage-2 向应用对应的Internal Storage里面写入数据,这里以写对象来示例,如下:FileOutputStream fout = null;ObjectOutputStream os = null;tryfout =HelloWorldActivity.this.openFileOutput(MyData.txt,Activity.MODE_PRIVATE);os = new ObjectOutputStream(fout);os.writeObject(list)
6、;catch(Exception err)err.printStackTrace();finallytry fout.close();catch(IOException e1)e1.printStackTrace();try os.close(); catch(IOException e)e.printStackTrace(); 不支持BufferedOutputStreamInternal Storage-3 读取应用对应的Internal Storage里面的数据,这里以读取对象来示例,如下:FileInputStream fin = null;ObjectInputStream os =
7、 null;fin = HelloWorldActivity.this.openFileInput(os = new ObjectInputStream(fin);Toast.makeText(HelloWorldActivity.this, read file=+os.readObject(),Toast.LENGTH_LONG).show();catch(Exception err)err.printStackTrace();finallytryfin.close();tryos.close();catch(IOException e)e.printStackTrace(); 同样不支持B
8、ufferedInputStreamInternal Storage-保存Cache文件 如果你希望保存一些Cache数据,你可以使用getCacheDir() 来打开文件,将会把数据存储到一个临时的Cache文件里面。 当设备的内部存储空间低的时候,Android系统可能会清除这些Cache文件,以回收存储空间,这也意味着,你不能在Cache文件里面存储需要持久化的数据。Internal Storage-其它常用方法 在Context中其他常用的方法:getFilesDir()得到内部存储的文件系统的绝对路径getDir()在内部存储中创建目录,如果存在的话就打开这个目录deleteFile
9、()删除文件fileList()返回当前应用存储的文件列表External Storage(操作SD卡)-1 Android的I/O基本上和Java的I/O是一样的,只有一点点不同的地方,比如:需要加入sdcard的操作权限需要判断sd卡是否存在,存在才能操作放在sdcard的文件是公共的,而放到自己应用目录里面的文件才是私有的 常用的功能在AndroidManifest.xml添加sdcard读写操作权限/uses-permission在AndroidManifest.xml添加能创建和删除sdcard文件的操作权限android.permission.MOUNT_UNMOUNT_FILES
10、YSTEMS /判断SD卡是否插入Environment.getExternalStorageState().equals(android.os.Enviroment.MEDIA_MOUNTED)获得SD卡根目录Android7及以下版本,使用:Environment.getExternalStorageDirectory()可以获得如下路径“/Android/data/files/”Android8及以上版本,建议使用:Context的getExternalFilesDir(type)方法,type表示你想要访问什么样的子目录,比如Environment.DIRECTORY_MUSIC,如果
11、访问根目录,就传入null。External Storage(操作SD卡)-2 从SD卡上读文件,基本就是Java里面I/O的操作,这里以读对象为例:public Object readFile(String filePathName) Object ret = null;FileInputStream fins = null;try File file = new File(Environment.getExternalStorageDirectory() + filePathName);fins = new FileInputStream(file);os = new ObjectInpu
12、tStream(fins);ret = os.readObject(); catch(Exception err)err.printStackTrace();try fins.close();return ret; 比较遗憾的是,目前加上BufferedInputStream就出错External Storage(操作SD卡)-3 向SD卡上写文件,基本就是Java里面I/O的操作,这里以写对象为例:public void writefile(String filePathName,Object obj)FileOutputStream fouts = null;File file = new
13、 File(Environment.getExternalStorageDirectory() +filePathName);if(file.getParentFile().isDirectory() & !file.getParentFile().exists()file.getParentFile().mkdirs();if(!file.exists()file.createNewFile(); fouts = new FileOutputStream(file);os = new ObjectOutputStream(fouts);os.writeObject(obj); catch (
14、Exception err) err.printStackTrace();try fouts.close(); 如果要保存成Cache文件,可以使用Context的getExternalCacheDir方法二、数据存取方式 Preference “键-值”方式存储,以 xml 文件的形式保存 File 采用 java.io.* 库所提供 I/O 接口读写文件 SQLite SQLite 是轻量级的嵌入式数据库引擎 Content Provider 用于实现不同应用程序之间的数据共享1、 Preference 主要用于存储数据较少的场合,比如配置信息 文件位置:/data/data/shared
15、_prefs/*.xml 需要用到接口:SharedPreferences 及其内部接口:SharedPreferences.Editor 取得接口: Context.SharedPreferences(filename,mode) SharedPreferences.edit() 数据类型、数据操作: int、flaot、string、boolean等 putString(key,value) getString(key,defValue)实例:Test_of_Preference 定义 main.xml: 一个 EditText 用于键入数据 三个 Button 分别用于将数据写入 xml
16、 文件、从文件获取数据并显示、清除文件中的数据 定义 sharedpreferences.xml: 一个 TextView 用于显示从文件中获取的数据textView1=(TextView)findViewById(R.id.textView1); 创建接口 sp1、spEditor1private SharedPreferences sp1;sp1 = this.getSharedPreferences(test, MODE_PRIVATE);SharedPreferences.Editor spEditor1 = sp1.edit(); 以键值 方式加入数据spEditor1.putStr
17、ing(TEXT,et1.getText().toString();spEmit(); 以 String Key 为索引来获取数据String string1 = sp1.getString( textView1.setText(string1); 清除数据spEditor1.clear().commit();运行结果:可在File Explorer 中查找、导出文件:data/data/shared prefs/test.xml2、 File 文件可用来存放大量数据,如文本、图片、音频等 默认位置:/files/*.* java.io.* 库提供 I/O 接口实现本地文件读写 文件输入流的获
18、取 Context.openFileInput(String name) 文件输出流的获取 Context.openFileOutput(String name, int mode) 包内资源(res/raw/)文件的读取 Resources.openRawResource(R.raw.file)Test_of_File 两个 EditText、两个 Button 写文件 writeFile(str):private void writeFile(String str) try FileOutputStream output= openFileOutput(FILE_NAME,MODE_APP
19、END); output.write(str.getBytes(); output.close(); catch(Exception e) Log.e(File_IO, e.toString(); this.finish(); 读文件 readFile():private String readFile() FileInputStream input = openFileInput(FILE_NAME); byte buffer = new byteinput.available(); input.read(buffer); input.close(); String str = new St
20、ring(buffer); return str; return null;editText2.setText(readFile(); 运行结果: 注意:写文件时用的 MODE_APPEND 模式3、 SQLite 轻量级嵌入式数据库引擎,面向资源有限的设备 没有服务器进程 所有数据存放在同一文件中 跨平台,可自由复制 SQLiteOpenHelper 帮助类,用于管理数据库创建和版本更新 onCreate(SQLiteDatabase db) onUpgrade(db,int old_ver,int new_ver) sqlite3 :位于 /toolsTest_of_SQLite Data
21、baseHelper 继承自 SQLiteOpenHelper 重写了onCreate()、onUpgrade() 方法 实现 insert、del、query、close 等方法 ListView 显示记录,字段对应成 TextView ListView 的 onItemClick() 实现删除记录 数据库文件路径: /data/data/database/*.dbDatabaseHelper.javaprivate SQLiteDatabase db;public void insert(ContentValues values) SQLiteDatabase db = getWritab
22、leDatabase(); db.insert(TABLE_NAME, null, values); db.close();public void del(int id) if(db = null) db = getWritableDatabase(); db.delete(TABLE_NAME, _id=?, new StringString.valueOf(id);public void onCreate(SQLiteDatabase db) this.db = db; db.execSQL(CREATE_TABLE);Query_Test.javaDatabaseHelper dbHel
23、per = new DatabaseHelper(this);Cursor cursor = dbHelper.query();String from = _idnameurlnotes;int to = R.id.textView1,R.id.textView2,R.id.textView3, R.id.textView4;SimpleCursorAdapter scadapter = new SimpleCursorAdapter (this,R.layout.favoritelist,cursor,from,to);ListView listView = getListView();li
24、stView.setAdapter(scadapter);AlertDialog.Builder adBuilder = new AlertDialog.Builder(this);listView.onItemClick adBuilder.setMessage(确认删除?) .setPositiveButton(Y, new OnClickListener() .setNegativeButton(N, new OnClickListener(); AlertDialog aleraDialog = adBuilder.create(); aleraDialog.show();4、 Con
25、tent Provider 与 Activity、Service、Broadcast Receiver 同属 Android 应用程序基本组件之一 用于保存和检索数据,实现了数据的跨应用共享 Android 中各应用均运行在自己的进程中,互相访问的 Content Provider 接口统一定义在 android.provider 包内,涵盖了常见的数据类型如音视频、图片、联系人等 实现的方法包括:insert、delete、qurey、update 等 URI Content Provider 用以实现数据共享的对象 Content Resolver Content Provider 的客户端接口 客户端通过 getContentResolver() 获得接口 提供与 Content Pro
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1