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 ...
随机推荐
- Java学习随笔4:Java的IO操作
1. IO流的作用是读写设备上的数据,如硬盘文件.内存.键盘.网络等.根据数据走向,可分为:输入流和输出流:根据处理的数据类型,可分为:字节流和字符流.字节流可以处理所有类型的数据,如MP3.图片.视 ...
- 战斗住的DPS才是DPS,持续的执行力才是执行力
工作久了,真的发现执行力这个东西太难被贯彻,计划时信心满满,冲劲十足,持续一段时间后就喇叭腔了.
- cdh环境下,spark streaming与flume的集成问题总结
文章发自:http://www.cnblogs.com/hark0623/p/4170156.html 转发请注明 如何做集成,其实特别简单,网上其实就是教程. http://blog.csdn.n ...
- BZOJ 2049 [Sdoi2008]Cave 洞穴勘测 ——Link-Cut Tree
[题目分析] LCT另一道题目,很裸,许多操作都不需要,写起来很爽. [代码] #include <cstdio> #include <cstring> #include &l ...
- js从字符串中提取身份证号,连续18位数字
<!DOCTYPE html> <html> <head> <title>提取身份证号</title> <meta charset=& ...
- Sharepoint超期触发列表工作流提醒
项目背景 Sharepoint 2010 ,Infopath 2010环境,用Infopath设置好表单把数据提交到Sharepoint的Library库.很常见的需求,其中有一个[状态]字段,[申请 ...
- angularjs学习资料
API http://www.yiibai.com/angularjs/angularjs_scopes.html 视频 http://v.youku.com/v_show/id_XNjQ3MjA1N ...
- C#解决从含身份证号码的Excel表格导入数据库的问题
用C#做从Excel表导入SQL数据库时发现从EXCEL导入的身份证号码会变成科学表示方法. 解决这个问题是比较容易的,首先,打开电子表格,选中“身份证号码”一列,右键选择“设置单元格格式”,进入单元 ...
- get请求
写在前面的话 XMLHttpRequest对象的open方法的第一个参数为request-type,取值可以为get或post.本篇介绍get请求. get请求的目的,主要是为了获取数据.虽然get请 ...
- ssh myeclipse的bug
1 有时候复制完一个类的时候,myeclispe会少复制一些方法.很坑爹.复制的时候最好从新创建让后粘贴 2 有时候jsp页面经过修改该以后,在网页上显示的还是原来的页面,很坑爹.删掉tomcat然后 ...