android-数据存储之外部file存储(sdcard)
一、基础概要
1、说明:
1>应用程序运行用到的数据文件可以保存到sd卡中
2>文件类型:任意
3>数据保存路径:
路径1:/storage/sdcard/Android/data/packageName/files 其它应用可以访问,应用卸载时删除
路径2:/storage/sdcard/xxx/ (表示自己创建的文件--xxx) 其它应用可以访问,应用卸载时不会被删除
2、相关API
Environment 操作sd卡工具类:
---得到sd卡状态:Environment.getExternalStorageState()
sd卡可读写的挂载状态值:Environment.MEDIA_MOUNTED
---得到sd卡路径:Environment.getExternalStorageDirectory()
context.getExternalFilesDir():
---得到 /mnt/sdcard/Android/data/package_name/files/xxx.txt
操作sd卡的权限:
---android.permission.WRITE_EXTERNAL_STORAGE 属于写的权限,但加上后也可读。
二、开发步骤(路径1)
1、写数据
1>判断sd卡状态,如果是挂载的状态继续
2>获取输入文件名/内容
3>得到指定文件的OutputStream:
.得到sd卡下的files路径
.组成完整路径
.创建FileOutputStream
4>写数据
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
String fileName="xrk";
String fileContent="我不是向日葵";
String filesPath=getExternalFilesDir(null).getAbsolutePath();
String filePath=filesPath+"/"+fileName;
FileOutputStream fos=new FileOutputStream(filePath);
fos.write(fileContent.getBytes("utf-8"));
fos.close();
Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this, "保存是啊比", Toast.LENGTH_SHORT).show();
}

2、读数据:
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
String fileName="xrk";
String filesPath=getExternalFilesDir(null).getAbsolutePath();
System.out.println("iueiudshcs"+filesPath);
String filePath=filesPath+"/"+fileName;
FileInputStream fis=new FileInputStream(filePath);
ByteArrayOutputStream baos=new ByteArrayOutputStream();
byte[] buffer=new byte[1024];
int len=-1;
while((len=fis.read(buffer))!=-1){
baos.write(buffer, 0, len);
}
String content=baos.toString();
Toast.makeText(MainActivity.this, "读取成功"+content, Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this, "读取失败", Toast.LENGTH_SHORT).show();
}
三、开发步骤(路径2)
1、写数据
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
String fileName="谢荣康.txt";
String fileContent="我不是向日葵";
//得到指定文件的输出流
String sdPath=Environment.getExternalStorageDirectory().getAbsolutePath();
File file=new File(sdPath+"/atguigu");
if (!file.exists()) {
file.mkdirs();//创建文件夹
}
String filePath=sdPath+"/atguigu/"+fileName;
String filesPath=getExternalFilesDir(null).getAbsolutePath();
System.out.println("iueiudshcs"+filesPath);
FileOutputStream fos=new FileOutputStream(filePath);
fos.write(fileContent.getBytes("utf-8"));
fos.close();
Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this, "保存是啊比", Toast.LENGTH_SHORT).show();
}

2、读数据:
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
String fileName="谢荣康.txt";
String sdPath=Environment.getExternalStorageDirectory().getAbsolutePath();
String filePath=sdPath+"/atguigu/"+fileName;
FileInputStream fis=new FileInputStream(filePath);
ByteArrayOutputStream baos=new ByteArrayOutputStream();
byte[] buffer=new byte[1024];
int len=-1;
while((len=fis.read(buffer))!=-1){
baos.write(buffer, 0, len);
}
String content=baos.toString();
fis.close();
Toast.makeText(MainActivity.this, "读取成功"+content, Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this, "读取失败", Toast.LENGTH_SHORT).show();
}
android-数据存储之外部file存储(sdcard)的更多相关文章
- 【Android】14.2 外部文件存储和读取
分类:C#.Android.VS2015: 创建日期:2016-02-27 一.简介 1.基本概念 内部存储的私有可用存储空间一般都不会很大,对于容量比较大的文件,例如视频等,应该将其存储在外部存储设 ...
- 第8章 Android数据存储与IO——File存储
openFileOutput/openFileInput 这是android自带的两种解决方案.
- esxi存储(外部共享存储)
vSphere 基础物理架构中存储是一个非常关键的部分,没有好的存储,虚拟化也就没有存在的价值,并且它能够决定其系统性能的高低和如vMotion等高级功能能否实现.所以本次重点介绍vSphere中的存 ...
- Android数据存储:SDCard
Android数据存储之SDCard 0.获取sd卡路径. 1.讲述 Environment 类. 2.讲述 StatFs 类. 3.完整例子读取 SDCard 内存 0.获取sd卡路径 方法一: p ...
- Android数据存储的三种方式:SharePreferences , file , SQLite
(1)SharePreferences: 存入: SharedPreferences setter = this.getSharedPreferences("spfile", 0) ...
- Android数据存储三剑客——SharedPreferences、File、SQLite
Android中常用的数据存储一般有三种方式:SharedPreferences.文件和SQLite数据库,用来保存需要长时间保存的数据.本文将通过几个具体的小实例来讲解这三种方式的具体实现. 数据存 ...
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (一) —— 总览
Android数据的四种存储方式SharedPreferences.SQLite.Content Provider和File (一) —— 总览 作为一个完成的应用程序,数据存储操作是必不可少的. ...
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File
作为一个完成的应用程序,数据存储操作是必不可少的.因此,Android系统一共提供了四种数据存储方式.分别 是:SharePreference.SQLite.Content Provider和File ...
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (三) —— SharePreferences
除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.其存储位置在/data ...
随机推荐
- 为GDI函数增加透明度处理
用户对客户端的UI的要求越来越高,采用alpha通道对前景背景做混合是提高UI质量的重要手段. UI开发离不开GDI,然后要用传统的GDI函数来处理alpha通道通常是一个恶梦:虽然有AlphaBle ...
- 直接拿来用!最火的Android开源项目(二)(转)
GitHub上的开源项目不胜枚举,通过这些项目,也能让开发者在应用开发过程中事半功倍,作为开发者的你,在用这些开源项目吗?今天我们将介绍另外20个在GitHub上备受欢迎的Android开源项目,你准 ...
- UI中 frame 与 transform的用法与总结
在iOS中,我们是不可以直接访问控件中frame的结构体的成员的,因此我们需要分三步来改变一个UI控件的位置,大小 一.frame用法 frame的结构体类型为: struct CGRect { CG ...
- Mysql怎样取消错误命令
1.补上分号. 2.quit 3.由于Mysql中,‘号和"号都是成对出现的,故当错误键入'号或"号时,需要补全另一半才能退出.
- Android加载大图片OOM异常解决
尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图, 因为这些函数在完成decode后,最终都是通过 ...
- Linux内核学习之道
来自:http://blog.chinaunix.net/uid-26258259-id-3783679.html 内核文档 内核代码中包含有大量的文档,这些文档对于学习理解内核有着不可估量的价值,记 ...
- Atom 和 markdown 基本使用
Atom 和 markdown 基本使用 Atom 常用的快捷键 Cmd + Shift + P 打开命令窗口,可以运行各种菜单功能. Cmd + T 快速的多文件切换 Ctrl + G 文件内跳转到 ...
- 循环冗余检验算法CRC
http://blog.csdn.net/liyuanbhu/article/details/7882789 首先要了解多项式乘法,除法 了解模2运算的含义,多项式除法后合并同类项时..系数%2处理 ...
- python特殊函数 __call__()
__call__ 在Python中,函数其实是一个对象: >>> f = abs >>> f.__name__ 'abs' >>> f(-123) ...
- Java命令行输入求和的简单学习
思想:命令行输入的参数,必须先转换为数字才能进行加法计算,这就需要引用java.util.Scanner; 流程框图: 源代码: //实现几个整数相加的程序 //高开拓,2015.9.26 packa ...