xml

 <EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/et_5"
android:hint="要存储的的内容"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/et_6"
android:hint="从文件中读取的内容"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="保存到带包名的目录"
android:layout_weight="1"
android:onClick="onclick7"/>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="从带包名的目录中获取"
android:layout_weight="1"
android:onClick="onclick8"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="保存到自定义的目录"
android:layout_weight="1"
android:onClick="onclick9"/>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="从自定义的目录中获取"
android:layout_weight="1"
android:onClick="onclick10"/>
</LinearLayout>

java

需要权限

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
   //向外部空间存储文件 保存到带包名的目录
public void onclick7(View view)
{
//
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
{
//1.获取要存储的内容
String content = et_5.getText().toString(); //2.获取外部存储带包名的目录 ——只到根目录
// String sdpath = Environment.getExternalStorageDirectory().getAbsolutePath();
//Toast.makeText(Activitydata.this, "sdpath= "+sdpath, Toast.LENGTH_LONG).show(); //参数 代表不同文件类型的子目录 如果没有就传null 获取到根目录下的带包名的目录
String sdpath = getExternalFilesDir(null).getAbsolutePath();
Toast.makeText(Activitydata.this, "sdpath= "+sdpath, Toast.LENGTH_LONG).show(); //3.构造输出流
sdpath += "/" +FILENAME; try {
FileOutputStream fos = new FileOutputStream(sdpath,true); //传统方式 字节数组方式
fos.write(content.getBytes("utf-8")); fos.close(); Toast.makeText(Activitydata.this, "保存成功", Toast.LENGTH_SHORT).show(); } catch (Exception e) {
e.printStackTrace();
Toast.makeText(Activitydata.this, "保存失败", Toast.LENGTH_SHORT).show();
}
}
else
{
Toast.makeText(Activitydata.this, "sd卡没有挂载", Toast.LENGTH_SHORT).show();
} } //从外部存储空间中读取带包名文件
//判断是否挂载
public void onclick8(View view)
{
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
{
//1.获取要存储的内容
//String content = et_5.getText().toString(); //2.获取外部存储带包名的目录 ——只到根目录
// String sdpath = Environment.getExternalStorageDirectory().getAbsolutePath();
//Toast.makeText(Activitydata.this, "sdpath= "+sdpath, Toast.LENGTH_LONG).show(); //参数 代表不同文件类型的子目录 如果没有就传null 获取到根目录下的带包名的目录
String sdpath = getExternalFilesDir(null).getAbsolutePath();
// Toast.makeText(Activitydata.this, "sdpath= "+sdpath, Toast.LENGTH_LONG).show(); //3.构造输入流
sdpath += "/" +FILENAME; try {
FileInputStream fis = new FileInputStream(sdpath); byte[] b = new byte[1024]; int i = 0; StringBuilder sbr = new StringBuilder(); while ((i = fis.read(b))>0)
{
sbr.append(new String(b,0,i));
et_6.setText(sbr);
}
fis.close(); Toast.makeText(Activitydata.this, "获取成功", Toast.LENGTH_SHORT).show(); } catch (Exception e) {
e.printStackTrace();
Toast.makeText(Activitydata.this, "获取失败", Toast.LENGTH_SHORT).show();
}
}
else
{
Toast.makeText(Activitydata.this, "sd卡没有挂载", Toast.LENGTH_SHORT).show();
}
} //保存文件到自定义目录
public void onclick9(View view)
{ if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
//1.获取要存储的内容
String content = et_5.getText().toString(); //2.获取外部存储的根目录
String sdpath = Environment.getExternalStorageDirectory().getAbsolutePath(); //在sd卡的根目录下创建子目录
sdpath += "/hanqi"; //实例化File,指向一个目录
File file = new File(sdpath); //如果不存在创建一个
if (!file.exists()) {
//创建目录
file.mkdirs();
}
Toast.makeText(Activitydata.this, "path= " + sdpath, Toast.LENGTH_SHORT).show(); //3.创建输出流
sdpath += "/" + FILENAME; try {
FileOutputStream fos = new FileOutputStream(sdpath, true); //传统方式 字节数组方式
fos.write(content.getBytes("utf-8")); fos.close(); Toast.makeText(Activitydata.this, "保存成功", Toast.LENGTH_SHORT).show(); } catch (Exception e) {
e.printStackTrace();
Toast.makeText(Activitydata.this, "保存失败", Toast.LENGTH_SHORT).show();
}
} else
{
Toast.makeText(Activitydata.this, "sd卡没有挂载", Toast.LENGTH_SHORT).show();
} } public void onclick10(View view){ if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
{
//1.获取要存储的内容
//String content = et_5.getText().toString(); //2.获取外部存储带包名的目录 ——只到根目录
String sdpath = Environment.getExternalStorageDirectory().getAbsolutePath();
//Toast.makeText(Activitydata.this, "sdpath= "+sdpath, Toast.LENGTH_LONG).show(); //参数 代表不同文件类型的子目录 如果没有就传null 获取到根目录下的带包名的目录
//String sdpath = getExternalFilesDir(null).getAbsolutePath();
// Toast.makeText(Activitydata.this, "sdpath= "+sdpath, Toast.LENGTH_LONG).show(); //3.构造输入流
sdpath += "/hanqi/" +FILENAME; Toast.makeText(Activitydata.this, ""+sdpath, Toast.LENGTH_SHORT).show(); try {
FileInputStream fis = new FileInputStream(sdpath); byte[] b = new byte[1024]; int i = 0; StringBuilder sbr = new StringBuilder(); while ((i = fis.read(b))>0)
{
sbr.append(new String(b,0,i));
et_6.setText(sbr);
}
fis.close(); Toast.makeText(Activitydata.this, "获取成功", Toast.LENGTH_SHORT).show(); } catch (Exception e) {
e.printStackTrace();
Toast.makeText(Activitydata.this, "获取失败", Toast.LENGTH_SHORT).show();
}
}
else
{
Toast.makeText(Activitydata.this, "sd卡没有挂载", Toast.LENGTH_SHORT).show();
} }

Android——数据存储:手机外部存储 SD卡存储的更多相关文章

  1. Android学习笔记-获取手机内存,SD卡存储空间。

    前面介绍到如何保存数据到手机内存或者SD卡,但是问题是,在保存以前,我们还需要对他们的空间(可用空间),进行判断,才可以进行后续操作,所以,本节我们就介绍如何获取手机内存以及Sd卡的空间. //这时获 ...

  2. Android 4.0以后正确的获取外部sd卡存储目录

    刚解决这个棘手的问题 找了很久,随笔记下. 网上搜索 android 获取外部sd卡存储目录 普遍都是: 1) Environment.getExternalStorageDirectory() 这个 ...

  3. 【Android】14.0 第14章 内部存储与外部SD卡存储—本章示例主界面

    分类:C#.Android.VS2015: 创建日期:2016-02-27 一.简介 Android使用的文件系统是基于Linux的文件系统,在Android应用程序中,开发人员既可以建立和访问程序自 ...

  4. Android 存储(本地存储 SD卡存储 SharedPreference SQLite ContentProvider)

    本文出自:http://blog.csdn.net/dt235201314/article/details/73176149 源码下载欢迎Star(updating):https://github.c ...

  5. Android SD卡存储

    原创文章,转载请注明出处:http://www.cnblogs.com/baipengzhan/p/Android_SDcard_store.html 一 概念 SD卡存储空间比较大,当需要存取较大的 ...

  6. 快速解决设置Android 23.0以上版本对SD卡的读写权限无效的问题

    快速解决设置Android 23.0以上版本对SD卡的读写权限无效的问题 转 https://www.jb51.net/article/144939.htm 今天小编就为大家分享一篇快速解决设置And ...

  7. 【Arcgis for android】保存地图截图到sd卡

    关键词:arcgis for android ,截图,bitmap,sd卡 参考文章:http://blog.csdn.net/wozaifeiyang0/article/details/767972 ...

  8. 手机开机提示SD卡受损

    手机开机提示SD卡受损,手机不显示内存卡,有人会选择换新卡或者格式化内存卡,如果刚好木有备份,内存卡上的珍藏丢失了多心痛啊.其实,我们可以通过电脑救活提示受损的内存卡,前后不超过5分钟... 方法:1 ...

  9. Android—将Bitmap图片保存到SD卡目录下或者指定目录

    直接上代码就不废话啦 一:保存到SD卡下 File file = new File(Environment.getExternalStorageDirectory(), System.currentT ...

随机推荐

  1. PHP开发安全问题

    1.不相信表单 对于一般的Javascript前台验证,由于无法得知用户的行为,例如关闭了浏览器的javascript引擎,这样通过POST恶意数据到服务器.需要在服务器端进行验证,对每个php脚本验 ...

  2. Microsoft Office2003打开office2007文件的补丁

    Microsoft  office2003打开office2007,不需要安装2007,只需要装一个补丁即可 搜索:office2003打开office2007文件的补丁

  3. Google官方下拉刷新组件---SwipeRefreshLayout

    今天在Google+上看到了SwipeRefreshLayout这个名词,遂搜索了下,发现竟然是刚刚google更新sdk新增加的一个widget,于是赶紧抢先体验学习下. SwipeRefreshL ...

  4. C# 编码命名规则

    C# 编码命名规则 各种类型命名规范总结 类型 命名规则 注意事项 实例 类或结构 Pascal 首字符大写 HttpContext 接口 Pascal 加前缀I IDataAdaper 枚举名 Pa ...

  5. Jmeter——BeanShell PreProcessor的用法

    一.什么是BeanShell BeanShell是一个小型嵌入式Java源代码解释器,具有对象脚本语言特性,能够动态地执行标准JAVA语法,并利用在JavaScript和Perl中常见的的松散类型.命 ...

  6. DBA_实践指南系列7_Oracle Erp R12监控OAM(案例)

    2013-12-07 Created By BaoXinjian

  7. MyEclipse中常用的快捷键大全

    http://www.cnblogs.com/wl0000-03/p/5953989.htmlMyEclipse中常用的快捷键大全 复制当前行到下(上)一行中:ctrl+alt+上下键 自动补全alt ...

  8. java中代理,静态代理,动态代理以及spring aop代理方式,实现原理统一汇总

    若代理类在程序运行前就已经存在,那么这种代理方式被成为 静态代理 ,这种情况下的代理类通常都是我们在Java代码中定义的. 通常情况下, 静态代理中的代理类和委托类会实现同一接口或是派生自相同的父类. ...

  9. C 多级指针

    C多级指针 *p                      -----> &p1 *(*p)                   ----->*(&p1) = &p ...

  10. 基于Unity3d 引擎的Android游戏优化

    原文地址:http://blog.csdn.net/jixuguo/article/details/9018669 近期项目进入收尾阶段,之前对项目做了非常多优化,mesh合并 .降低DrawCall ...