`
lj_gzy2014
  • 浏览: 16708 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Android之数据存储(一)

 
阅读更多

              我们知道程序在运行时,数据是存放在运行内存中的,一旦程序关闭,数据就会丢失。那么我们要想数据不丢失怎么办呢?那就需要将数据存储在外存中,比如sd卡和手机自身内存。

              存储方式一:文件存储与读取

           Context类中提供了一个openFileOutput ()方法,可以将数据存储到指定的文件中。这个方法有两个参数。第一个是文件名,文件名不可以包含路径,因为所有的文件都是默认存储到/data/data/<package name> /files/目录下的;第二个参数是文件测操作模式,MODE_PRIVATE & MODE_APPEND                           MODE_PRIVATE是默认的操作模式,表示当指定同样文件名的时候,所写入的内容将会覆盖原文件中的内容,而MODE_APPEND则表示如果该文件已存在就往文件里面追加内容,不存在就创建新文件。使用代码实例:

public void save(String str){
		FileOutputStream fos=null;
		BufferedWriter bw=null;
		try {
			fos=openFileOutput("myTestData", Context.MODE_PRIVATE);
			bw=new BufferedWriter(new OutputStreamWriter(fos));
			try {
				bw.write(str);
			} catch (IOException e) {
				e.printStackTrace();
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}finally{
			if(bw!=null)
				try {
					bw.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
		}
		
	}

  Context类中提供了一个openFileInput ()方法,这个方法只有一个参数,那就是要读取的文件的文件名

使用实例:

 

 

 

public String load(String filename){
		String str="";
		StringBuilder content = new StringBuilder();
		FileInputStream fis=null;
		BufferedReader br=null;
		try {
			fis=openFileInput(filename);
			br=new BufferedReader(new InputStreamReader(fis));
			try {
				while((str=br.readLine())!= null ){
					content.append(str);
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}finally{
			if(br!=null){
				try {
					br.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		return content.toString();
	}

                  文件存储使用的基本都是java的io流,熟悉java的文件操作的应该很容易读懂上面的代码。文件存储简单,但是如果要存储复杂的数据,就得自己定义存取结构与方式,才能够正确的存储与获取。

            

                存储方式二·:SharedPreferences存储

         不同于文件的存储方式,SharedPreferences是使用键值对的方式来存储数据的。

用代码来看可能更清晰些。

存:

SharedPreferences.Editor editor=getSharedPreferences("data", Context.MODE_PRIVATE).edit();
			editor.putString("name", "Tom");
			editor.putInt("age", 18);
			editor.putBoolean("married", false);
			editor.commit();

 取:

 

 

 

SharedPreferences pref = getSharedPreferences("data", MODE_PRIVATE);
			String name = pref.getString("name", "");
			int age = pref.getInt("age", 0);
			boolean married = pref.getBoolean("married", false);
			Log.d("MainActivity", "name is " + name);
			Log.d("MainActivity", "age is " + age);
			Log.d("MainActivity", "married is " + married);

           很明显,SharedPreferences存储对于键值对的数据存储很方便。比如存储用户名,密码,就可以实现一个记住密码功能。但是对于密码这种私密性数据都会进行加密存储,不会直接存储的,这里就不祥细论述了。

 

        

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics