当前位置: 代码迷 >> Android >> Android的数据存储(1)——SharedPreferences和IO
  详细解决方案

Android的数据存储(1)——SharedPreferences和IO

热度:37   发布时间:2016-04-28 03:54:21.0
Android的数据存储(一)——SharedPreferences和IO

一,使用SharedPreferences

有些时候,应用程序有少量的数据需要保存,而且这些数据的格式很简单,都是普通的字符串或基本数据类型等,比如说用户的偏好设置,记住密码等,对于这种数据,可以用SharedPreferences进行保存。

1,SharedPreferences的基本操作

??

//----------------------查找----------------------------------	//获取只能被本应用读、写的SharedPreference对象,默认寻找在	//该应用目录下/data/data/app.package.name/shared_prefs目录下的login.xml文件		SharedPreferences sp = getSharedPreferences("login", MODE_PRIVATE);	//在loing.xml中查找key是password的值。		String oldpass = sp.getString("password", "");//----------------------保存----------------------------------	SharedPreferences sp = getSharedPreferences("login",							MODE_PRIVATE);					//获取SharedPreferences的编辑器					SharedPreferences.Editor ed = sp.edit();					ed.putString("password", etpass.getText().toString());					// 当Editor编辑完成后,提交修改。					ed.commit();//----------------------删除----------------------------------editor.clear();     //清空SharedPreference里的所有数据editor.remove(String key)  //删除SharedPreference里指定key的数据项

?login.xml的内容:

?

2,如果想访问其他应用程序中的sharedpreferences.xml?

? ? ?1) 设置SharedPreference的权限:MODE_WORLD_READABLE ?其他应用程序可读

? ? ?2) 假设其中OtherApp中的包名:com.lydia.app ,获取该应用的Context对象?

? ? ??

Context other = createPackageContext("com.lydia.sp",							Context.CONTEXT_IGNORE_SECURITY);SharedPreferences sp = other.getSharedPreferences("otherXML",						Context.MODE_WORLD_READABLE);String ss = sp.getString(key);

?

?二,File存储

? ? 1,openFileOutput和openFileInput

?

? ? ? getDir(String name,int mode): 在应用程序的数据文件夹下获取或创建name对应的子目录

? ? ?File getFilesDir():获取对应应用程序的数据文件夹的绝对路径。 /data/data/com.package/files

? ? ?String[] fileList():返回该应用程序的数据文件夹下的全部文件。

? ? ?deleteFile(String) 删除该应用程序的数据文件夹下的指定文件

? ??

?

//----------读--------------------------------------------		// 打开对应程序的数据文件夹下的文件					// /data/data/com.lydia.testfile/files/tarena.dat					InputStream is = openFileInput("tarena.dat");					byte[] buff = new byte[1024];					int b = -1;					StringBuffer sb = new StringBuffer("");					while ((b = is.read(buff)) != -1) {						sb.append(new String(buff, 0, b));					}					etread.setText(sb.toString());					System.out.println(getDir("myDir", Context.MODE_APPEND));					System.out.println(getFilesDir());// /data/data/com.example.bbb/myDir					// 其中myDir是自己创建的目录					System.out.println(Arrays.toString(fileList()));// /data/data/com.example.bbb/files					// 其中files是系统创建的目录					deleteFile("tarena.dat");//删除//----------------写--------------------------------------	// 打开输出流					OutputStream os = openFileOutput("tarena.dat",							Context.MODE_APPEND);					PrintWriter pw = new PrintWriter(os);					pw.println(etwrite.getText().toString());					pw.close();

?

2,访问SD上的文件

? ? 步骤如下:

? ? 1)加入权限

   <!-- 在SD中创建与删除文件的权限 -->    <uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS"/>    <!-- 在SD中写入数据的权限 -->    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

?

?? ? 2)编写代码是要判断SD卡是否挂载

if (Environment.getExternalStorageState().equals(							Environment.MEDIA_MOUNTED)){}

?

? ? ?3)文件操作

? ? ??

File sdCardDir = Environment.getExternalStorageDirectory();File targetFile = new File(sdCardDir.getPath()+ "/my.dat");

?

? ?

? ? ?

  相关解决方案