数据存储之文件读写
2017-05-19 00:14
477 查看
数据的几种存储方式
1.文件
2.SharedPreference
>当有一个或者多个配置信息需要保存
3.数据库(特殊的文件,带索引)
>当有大量的相似结构的数据要存放,并且实现增删改查,推荐使用数据库
4 使用ContentProvider存储数据
5 网络存储数据
例如保存账号和密码
Android应用程序的数据要保存在自己的文件夹里面
文件创建出来默认是私有的
如果想创建别的权限的文件
openFileOutput("文件名","访问模式");
MODE_WORLD_READABLE 全局可读 别的应用程序可以读这个文件
MODE_WORLD_WRITEABLE 全局可写 别的应用程序可以写这个文件
MODE_WORLD_READABLE+MODE_WORLD_WRITEABLE 全局可读可写 别的应用程序可以自由的访问这个文件
Linux操作系统的文件权限
- - - - - - - - - - 总共10位
0:代表的是文件的类型 d:目录 -:文件
1-3:当前用户对文件的访问权限
4-6:用户所在组的访问权限
7-9:其他用户文件的访问权限
drwxr-x--x
r:可读
w:可写
x:可执行
rwx rwx rwx
111 111 111
7 7 7
在Android操作系统中每个应用程序都是独立的用户
chmod change mode 修改模式
chmod 777 修改权限
----------------------------------------------------------------------------------------------------------
读取数据
根据原来保存的文件信息,把账号和密码读取出来
getFilesDir() //获取应用程序files目录 /data/data/包名/files files目录存放重要的应用程序数据,
手机不会自动清理files目录的文件
getCacheDir(); /data/data/包名/cache cache目录存放临时的不重要的数据,这个目录有一个特点,当手机内存空间不足的时候会
自动清理cache目录的文件
手机存储空间的划分:
手机内部存储
>容量有限,较小,价格比较贵,存储访问速度快
>file目录 cache目录
>不需要声明权限,默认的权限全部都是私有的,别的应用程序不可以访问,只有自己的应用程序可以访问
File dataFile = Environment.getDataDirectory();//数据内部存储空间
long dataSize = dataFile.getTotalSpace();//单位是byte
Formatter.formatFileSize(mContext,dataSize);//格式化数据大小 ,Mb,Gb等
手机外部存储
>容量大,可以更换,价格便宜
>sd卡
>读写声明权限
File sdFile = Environment.getExternalStorageDirectory();//外部存储空间
long sdSize = sdFile.getTotalSpace();
1.文件
2.SharedPreference
>当有一个或者多个配置信息需要保存
3.数据库(特殊的文件,带索引)
>当有大量的相似结构的数据要存放,并且实现增删改查,推荐使用数据库
4 使用ContentProvider存储数据
5 网络存储数据
例如保存账号和密码
Android应用程序的数据要保存在自己的文件夹里面
try{ //File file = new File("data/data/包名/info.txt"); //得到一个文件的输出流,文件的位置/data/data/包名/files/info.txt /**File file = new File(getFilesDir(),"info.txt"); FileOutputStream fos = new FileOutputStream(file);*/ //上面两句可以这样写 0:默认私有(MODE_PRIVATE) MODE_WORLD_READABLE+MODE_WORLD_WRITEABLE FileOutputStream fos = openFileOutput("info.txt",0);//打开文件输出流 String info = account + "##" + pwd; fos.write(info.getBytes()); fos.close(); }catch(Exception e){ e.printStackTrace(); }
文件创建出来默认是私有的
如果想创建别的权限的文件
openFileOutput("文件名","访问模式");
MODE_WORLD_READABLE 全局可读 别的应用程序可以读这个文件
MODE_WORLD_WRITEABLE 全局可写 别的应用程序可以写这个文件
MODE_WORLD_READABLE+MODE_WORLD_WRITEABLE 全局可读可写 别的应用程序可以自由的访问这个文件
Linux操作系统的文件权限
- - - - - - - - - - 总共10位
0:代表的是文件的类型 d:目录 -:文件
1-3:当前用户对文件的访问权限
4-6:用户所在组的访问权限
7-9:其他用户文件的访问权限
drwxr-x--x
r:可读
w:可写
x:可执行
rwx rwx rwx
111 111 111
7 7 7
在Android操作系统中每个应用程序都是独立的用户
chmod change mode 修改模式
chmod 777 修改权限
----------------------------------------------------------------------------------------------------------
读取数据
根据原来保存的文件信息,把账号和密码读取出来
try{ //File file = new File("data/data/包名/info.txt"); File file = new File(getFilesDir(),"info.txt"); if(file.exists()&&file.length()>0){ FileInputStream fis = new FileInputStream(file); BufferedReader br = new BufferedReader(new InputStreamReader(fis)); String info = br.readLine(); String account =info.split("##")[0]; String pwd =info.split("##")[1]; } }catch(Exception e){ e.printStackTrace(); }
getFilesDir() //获取应用程序files目录 /data/data/包名/files files目录存放重要的应用程序数据,
手机不会自动清理files目录的文件
getCacheDir(); /data/data/包名/cache cache目录存放临时的不重要的数据,这个目录有一个特点,当手机内存空间不足的时候会
自动清理cache目录的文件
手机存储空间的划分:
手机内部存储
>容量有限,较小,价格比较贵,存储访问速度快
>file目录 cache目录
>不需要声明权限,默认的权限全部都是私有的,别的应用程序不可以访问,只有自己的应用程序可以访问
File dataFile = Environment.getDataDirectory();//数据内部存储空间
long dataSize = dataFile.getTotalSpace();//单位是byte
Formatter.formatFileSize(mContext,dataSize);//格式化数据大小 ,Mb,Gb等
手机外部存储
>容量大,可以更换,价格便宜
>sd卡
>读写声明权限
File sdFile = Environment.getExternalStorageDirectory();//外部存储空间
long sdSize = sdFile.getTotalSpace();
sd卡读写的操作: 向sd卡写一个视频文件 //检查sd卡的状态 if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ File sdFile = Environment.getExternalStorageDirectory();//外部存储空间 long sdSize = sdFile.getFreeSpace(); if(sdSize>5*1024*1024){ File file = new File(Environment.getExternalStorageDirectory(),System.currentTimemillis() + "aaa.3gp"); //生成视频文件,文件名“时间+aaa.3gp” try{ FileOutputStream fos = new FileOutputStream(file); byte[] buffer = new byte[1024]; for(int i=0;i<5*1024;i++){ fos.write(buffer); } fos.close(); }catch(Exception e){ e.printStackTrace(); } }else{ //sd卡空间不足 } }else{ //sd卡被拔出或者是不可用 } 权限 : WRITE_EXTERNAL_STORAGE、READ_EXTERNAL_STORAGE 生成空的视频文件
相关文章推荐
- WP8_读写XML WP8数据存储--独立存储文件
- Win8应用开发数据存储及xml文件读写
- 读写存储文件中的数据 二
- 读写内部存储的文件数据
- <5 Android数据存储> 任务二 应用程序数据文件夹里的文件读写 ,
- 【Cocos creator】文件数据读写,用户数据存储
- Android 数据存储02之文件读写
- android菜鸟学习笔记17----Android数据存储(一)文件读写
- java小型数据存储,资源文件读写示例
- [转]iOS iPhone 开发中的文件读写及数据存储
- android 数据存储操作3:文件读写
- Windows Phone开发之独立存储、文件的读写、ListBox绑定数据、NavigationService实现XAML跳转
- 如何在python中读写和存储matlab的数据文件(*.mat)
- 初学Android,数据存储之读写SD卡文件(四十三)
- 读写内部存储的文件数据
- 读写存储文件中的数据
- 详解如何在python中读写和存储matlab的数据文件(*.mat)
- 安卓存储数据和文件系列1:读写sdCard方式
- 如何在python中读写和存储matlab的数据文件(*.mat)
- 数据存储—读写内部存储的文件数据