android 文件读写

来源:互联网 发布:熊片数据库 编辑:程序博客网 时间:2024/05/29 10:00

文件存储

将数据存储到文件中

Context类中提供了一个openFileOutput ()方法,可以用于将数据存储到指定的文件中。这个方法接收两个参数,第一个参数是文件名,在文件创建的时候使用的就是这个名称,注意这里指定的文件名不可以包含路径,因为所有的文件都是默认存储到/data/data/<package name>/files/目录下的。第二个参数是文件的操作模式,主要有两种模式可选,MODE_PRIVATE和MODE_APPEND。其中MODE_PRIVATE是默认的操作模式,表示当指定同样文件名的时候,所写入的内容将会覆盖原文件中的内容,而MODE_APPEND则表示如果该文件已存在就往文件里面追加内容,不存在就创建新文件。其实文件的操作模式本来还有另外两种,MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE,这两种模式表示允许其他的应用程序对我们程序中的文件进行读写操作,不过由于这两种模式过于危险,很容易引起应用的安全性漏洞,现已在Android 4.2版本中被废弃。

public void saveToFile(String name, String data) {      private FileOutputStream fs = null;      private BufferedWriter out = null;         try {              fs = openFileOutput(name, Context.MODE_PRIVATE);              out = new BufferedWriter(new OutputStreamWriter(fs));              out.write(data);          } catch (IOException e) {              e.printStackTrace();          } finally {              try {                  if(out != null) {                      out.close();                  }              } catch (Exception e) {                  e.printStackTrace();              }          }      } 
从文件中读取数据
Context类中还提供了一个openFileInput()方法,用于从文件中读取数据。这个方法要比openFileOutput()简单一些,它只接收一个参数,即要读取的文件名,然后系统会自动到/data/data/<package name>/files/目录下去加载这个文件,并返回一个FileInputStream对象,得到了这个对象之后再通过Java流的方式就可以将数据读取出来了。

public String readFromFile(String name) {          private FileInputStream fs_in = null;          private BufferedReader input = null;        StringBuffer stringBuffer = new StringBuffer();          try {              fs_in = openFileInput(name);              input = new BufferedReader(new InputStreamReader(fs_in));              String line = "";              while((line = input.readLine()) != null) {                  stringBuffer.append(line);              }          } catch (Exception e) {              e.printStackTrace();          } finally {              if (input != null) {                  try {                      input.close();                  } catch (Exception e) {                      e.printStackTrace();                  }              }          }          return stringBuffer.toString();      } 

SharedPreferences存储

SharedPreferences
是一个轻量级的存储类,特别适合用于保存软件配置参数。是使用键值对的方式来存储数据的。也就是说当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。而且SharedPreferences还支持多种不同的数据类型存储,如果存储的数据类型是整型,那么读取出来的数据也是整型的,存储的数据是一个字符串,读取出来的数据仍然是字符串。使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs目录下:

获取SharedPreferences的两种方式:
1 调用Context对象的getSharedPreferences()方法
2 调用Activity对象的getPreferences()方法
两种方式的区别:
调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享.
调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用.
 
SharedPreferences的四种操作模式:
Context.MODE_PRIVATE
Context.MODE_APPEND
Context.MODE_WORLD_READABLE
Context.MODE_WORLD_WRITEABLE
 
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件.
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取.
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入.
将数据保存至SharedPreferences:
SharedPreferences preferences=getSharedPreferences("user",Context.MODE_PRIVATE);
Editor editor=preferences.edit();
String name="xixi";
String age="22";
editor.putString("name", name);
editor.putString("age", age);
editor.commit();
 
从SharedPreferences获取数据:
SharedPreferences preferences=getSharedPreferences("user", Context.MODE_PRIVATE);
String name=preferences.getString("name", "defaultname");
String age=preferences.getString("age", "0");

getSharedPreferences   是Context类中的方法, 可以指定file name 以及 mode。
getPreferences  是Activity类中的方法,只需指定mode
而 getSharedPreferences 与getDefaultSharedPreferences的区别
自定义的一些偏好设置用getSharedPreferences来获取,例如定义一个loginpref.xml的偏好文件
使用
SharedPreferences sharedPreferences = getSharedPreferences("loginpref", Context.MODE_PRIVATE);
System.out.println("set_location = "+sharedPreferences.getBoolean("islogin", false));
Editor editor =  sharedPreferences.edit();
editor.putBoolean("islogin", false);
editor.commit();

来获取或者更改
每个应用有一个默认的偏好文件preferences.xml,使用getDefaultSharedPreferences获取
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
System.out.println("set_location = "+preferences.getBoolean("if_set_location", false));
Editor editor =  preferences.edit();
editor.putBoolean("if_set_location", false);
editor.commit();


sd卡存储http://blog.csdn.net/mad1989/article/details/37568667

存储图片:http://blog.csdn.net/wulong710/article/details/12574629





0 0