您的位置:首页 > 其它

数据存储之文件读写

2017-05-19 00:14 477 查看
数据的几种存储方式

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
生成空的视频文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: