android 中文件存储以及几种操作模式


<1>CONTEXT.MODE_PRIVATE     私有操作模式, 为默认操作模式,数据只能被本应用访问,此模式下写入的数据,会覆盖原文件内容。

<2>CONTEXT.MODE_APPEND  追加操作模式,也只能被本应用访问,会先判断文件是否存在,若存在就追加在原有文件内容后面,不会把其覆盖掉

<3>CONTEXT.MODE_READABLE   此模式表示当前文件可以被其它应用读取

<4>CONTEXT.MODE_WRITEABLE 此模式表示当前文件可以被其它应用写入


如果既想要其它应用可读,又想要其它应用可写就openFileOutput(“a.text”,CONTEXT.MODE_READABLE+CONTEXT.MODE_WRITEABLE)即可。


android默认的创建的文件在/data/data/包名/files文件夹下,除非创建时指定了可读或可写模式,否者就不可访问

 

以下4个方法是默认存储读写文件,与sd卡的读写文件


public  void saveFile(String filename,String content,Context context){

    try {
          //此方法默认存储模式  openFileOutput  默默人存储在data/data/包名/files下filename文件中
          //可以设置不同的模式决定是否追加或允许其它应用读写
         FileOutputStream outStram =context.openFileOutput(filename,Context.MODE_PRIVATE);
         outStram.write(content.getBytes());
         outStram.close();
    } catch (Exception e) {
   // TODO Auto-generated catch block
      e.printStackTrace();
    }

}


public String readFile (String filename,String content,Context context)throws Exception{
    //此方法默认存储模式  openFileInput  默认去data/data/包名/files下filename文件中
    FileInputStream inputStream = context.openFileInput(filename);
    ByteArrayOutputStream bas = new ByteArrayOutputStream();
    byte[] bt = new byte[1024];
    int len ;
   while((len = inputStream.read(bt)) != -1){
      bas.write(bt,0,len);
   }
   byte[] data= bas.toByteArray();
   bas.close();
  inputStream.close();
  return new String(data);

 }

注意往sd卡中读写数据是要在manifast.xml文件中添加相应的权限


  

public String readFileSdcard (String filepath)throws Exception{
   
    //此方法会根据filepath路径去读文件 如:/sdcard/ff/a.text
    FileInputStream inputStream = new FileInputStream(filepath);
    ByteArrayOutputStream bas = new ByteArrayOutputStream();
    byte[] bt = new byte[1024];
    int len ;
   while((len = inputStream.read(bt)) != -1){
       bas.write(bt,0,len);
  }
  byte[] data= bas.toByteArray();
  bas.close();
  inputStream.close();
  return new String(data);
}

 public  void saveFileToSdcard(String path,String filename,String content){

    try {
          //此方法会把内容content写入到  path路径下的filename文件中
          File filepath = new File(path,filename);
          FileOutputStream outStram =new FileOutputStream(filepath);
          outStram.write(content.getBytes());
          outStram.close();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
   }
 }                  

你可能感兴趣的:(Android)