Android基础-文件存储

以下是个人初步学习安卓的一些关于文件存储的一些知识和小总结

文件存储

文件存储是android中最基本的一种数据存储方式,通过I/O流的形式把数据直接存储到文档中,与java的文件存储类似。可以存储大数据,如文本,图像,音频等。android的文件存储分为内部存储外部存储

内部存储

顾名思义,内部存储就是把应用程序的数据以文件方式存储到设备的内部(data/data/<packagename>file/目录下)。

内部存储使用的是Conetxt提供的openFileOutput()方法和openFileInput()方法

FileOutStream fos=openFileOutout(String name,int mode);//name:文件名,mode:文件的操作模式
FileInputStream fis=openFileInput(String name);

mode一般用来设置文件的访问权限 ,有MODE_PRIVATE,   MODE_APPEND,    MODE_WORLD_READABLE,   MODE_WORLD_WRITEABLE。

使用FIleOutputStream对象将数据存储到文件上

String fileName="bruceluo.txt";//文件名称
String content="bruceluo";
FileOutputStream f;
try{
    f=openFileOutput(fileName,MODE_PRIVATE);//MODE_PRIVATE表示该文件只能被当前文件读写   
    f.write(context.getBytes());//将数据写入文件bruceluo中
    f.cloase();
}catch (Exeception e){
    e.printStackTrace();
}
 

 取出数据,使用FileInputStream对象读取数据

String content="";
FileInputStream fis;
try{
    fis-openFileInput("bruceluo.txt");
    byte[] buffer=new byte[fis,available()];//创建缓冲区,获取文件长度
    fis.read(buffer);//将内容读取到缓冲区buffer
    content =new String(buffer);//转换成字符串
    fis.close();
}catch (Exception e){
    e.printStackTrace();
}

外部存储

外部存储是将文件存储到一些外部设备中,如sd卡等,一般文件位于mnt/sdcard目录中。因为外部存储设备有可能会移除,损坏或其他状态,所以我们要在外部设备使用之前用Environment.getExternalStorageState()方法来确认外部设备是否可用。具体的了解请查看这个转发,我这里把他当作一切正常。

另外为了保证程序的安全性,我们要在清单文件的<manifest>节点上添加sd卡的读写权限

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

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

向sd卡中存储数据

String state=Environment.getExternalStorageState();
if(state.equals(Environment.MEDIA_MOUNTED)){            //判断外部设备是否可用
   File SDPath=Environment.getExternalStorageDirectory();//获取sd卡目录,这方法可避免把路径写死找不到sd卡
   File file=new File(SDPath,"bruceluo.txt");
   String data="bruceluo";
   FileOutputStream fos;
   try{
       fos =new FileOutputStream(file);
       fos.write(data.getBytes());
       fos.close();
     } catch (Exception e) {
         e.printStackTrace();
     }
} 

从sd卡中读取数据

String state=Environment.getExternalStorageState();
if(state.equals(Environment.MEDIA_MOUNTED)){            //判断外部设备是否可用
   File SDPath=Environment.getExternalStorageDirectory();//获取sd卡目录,这方法可避免把路径写死找不到sd卡
   File file=new File(SDPath,"bruceluo.txt");
   FileInputStream fis;
   try{
       fis=new FileInputStream(file);
       BufferedReader br=new BufferedReader(new InputStreamReader(fis));//字节流转换为字符流
       String data=br.readLine();
     }catch (Exception e){ 
        e.printStackTrace();
     }
}

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值