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

本文详细介绍了Android中四种文件操作模式及其应用场景,包括私有模式、追加模式、可读模式和可写模式,并提供了默认存储及SD卡读写的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


<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文件中添加相应的权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>  

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();
   }
 }                  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值