SD卡操作【安卓8】

读写SD卡

  Context类的openFileInput和openFileOutput方法都是针对应用程序的数据文件夹进行的文件操作,由于手机的ROM容量有限,因此这种操作有一定局限性。

  手机的SD卡提供了比ROM更大的存储容量。更加适合于存取大文件。

Environment[android.os. Environment]


常量及方法


类型


描述


public static final String MEDIA_MOUNTED


常量


扩展存储设允许进行读写访问


public static final String MEDIA_CHECKING


常量


扩展存储设处于检查状态


public static final String MEDIA_MOUNTED_READ_ONLY


常量


扩展存储设处于只读状态


public static final String MEDIA_REMOVED


常量


扩展存储设不存在


public static final String MEDIA_UNMOUNTED


常量


没有找到扩展存储设


public static File getDataDirectory()


普通


取得Data目录


public static File getDownloadCacheDirectory()


普通


取得下载的缓存目录


public static File getExternalStorageDirectory()


普通


取得扩展的存储目录


public static String getExternalStorageState()


普通


取得扩展存储设备的状态


public static File getRootDirectory()


普通


取得Root目录


public static boolean isExternalStorageRemovable()


普通


判断扩展的存储目录是否被删除

申请SD卡的读写权限

  打开项目清单文件,在Permission选项卡中选择权限

SD卡文件读取操作

 1 private TextView tv;
 2 private Button bt1;
 3 private Button bt2;
 4 private EditText et;
 5
 6 protected void onCreate(Bundle savedInstanceState) {
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.xml文件);
 9         et = (EditText) findViewById(R.id.sdET);
10         tv = (TextView) findViewById(R.id.sdTV);
11         bt1 = (Button) findViewById(R.id.sdBT01);
12         bt2 = (Button) findViewById(R.id.sdBT02);
13         bt1.setOnClickListener(this);
14         bt2.setOnClickListener(this);
15     }
16
17 public void onClick(View v) {
18         if (!Environment.getExternalStorageState().equals(
19                 Environment.MEDIA_MOUNTED)) {// 判断SD卡是否存在
20             Toast.makeText(Sd0.this, "SD卡不存在", 3000).show();
21             return;
22         }
23         switch (v.getId()) {
24         case R.id.sdBT01:
25             // 创建文件夹对象
26             File dir = new File(Environment.getExternalStorageDirectory(),"test");
27             if (!dir.exists()) { // 如果目录不存在,就创建
28                 dir.mkdir();
29             }
30             File file = new File(dir, "test.txt"); // 创建文件
31             PrintWriter pw;
32             try {
33                 pw = new PrintWriter(file);
34                 pw.println(et.getText().toString());
35                 pw.close();
36                 Toast.makeText(Sd0.this, "保存成功", 3000).show();
37             } catch (FileNotFoundException e) {
38                 e.printStackTrace();
39             }
40             break;
41         case R.id.sdBT02:
42             File f = new File(Environment.getExternalStorageDirectory()+
43                     "/test/test.txt");// 创建文件夹对象
44             BufferedReader br;
45             try {
46                 br = new BufferedReader(new InputStreamReader(new FileInputStream(f)));
47                 String str = null;
48                 while ((str = br.readLine()) != null) {
49                     tv.append(str);
50                 }
51             } catch (FileNotFoundException e) {
52                 e.printStackTrace();
53             } catch (IOException e) {
54                 e.printStackTrace();
55             }
56             break;
57         }
58 }

时间: 2024-08-08 09:37:09

SD卡操作【安卓8】的相关文章

WP8.1 Study12:文件压缩与Known Folder(包含SD卡操作)

一.文件压缩 当应用程序保存和加载数据,它可以使用压缩. 1.使用 Windows.Storage.Compression.Compressor 压缩,获得一个Compressor stream. var s = await destFile.OpenAsync(FileAccessMode.ReadWrite); Compressor compressor = new Compressor(s.GetOutputStreamAt(0), CompressAlgorithm.Mszip, 0);

SD卡操作相关的工具SDCardUtils

SD卡操作相关的工具 package com.flyou.utils; import java.io.File; import android.os.Environment; import android.os.StatFs; /** * SD卡相关的辅助类 * * * */ public class SDCardUtils { private SDCardUtils() { /* cannot be instantiated */ throw new UnsupportedOperationE

android进阶之SD卡操作

第一,判断SD卡是否挂载 第二获得SD卡目录声明权限进行文件读写操作. 获得SD卡目录的方式 API获取sd卡目录 SD卡状态

SD卡操作

1.SD卡的上电初始化和读写,都是通过发命令的方式进行的.命令有两种,一种是CMD,一种是ACMD,发ACMD之前,必须要发CMD55,大部分命令还需要带参数. 2.发送命令后,会有响应.命令的参数,以及各命令对应的响应,见协议. 3.SD卡初始化的时候,时钟速率不能超过400KHZ. 4.对SD卡进行配置的时候,比如位宽,不要忘记对MCU做响应的配置. 5.附件有完整的上电初始化和读写的流程,以及SD卡协议,对着代码很容易看懂.

关于读、写SD卡的操作

1.点击按钮将assets文件夹中的内容复制到SD卡中. private void copyToSD() { // 检测SD卡是否挂载  Environment.MEDIA_MOUNTED 表示被挂载 // Environment.getExternalStorageState() 将返回sd卡的状态 if(! Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { Toast.makeText(thi

SD卡应用总结(Fatfs)

转载自:SD卡应用总结(FatFs) 对于SD卡的应用,想必大家都尝试多.不过,很多网友恐怕只停留在实验的基础上吧.对于SD卡在文件系统下或者不带文件系统下,对SD卡的操作都是很简单的.是的,只是简单的文件读写确实不难.但是,如果每秒钟不停的写数据,而且是不停的工作,恐怕SD卡的应用就没有这么简单了吧,有时总会出现一些莫名其妙的问题. 不知道大家是否遇到过这些问题?本人开发了几个关于SD卡的项目,例如,定时拍照.定时录音等.对于这样的项目,基本上要求每一秒都在不停的写数据,而且一般一天工作好几个

第36章 SDIO—SD卡读写测试

第36章     SDIO-SD卡读写测试 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 本章参考资料:<STM32F4xx参考手册>.<STM32F4xx规格书>.库帮助文档<stm32f4xx_dsp_stdperiph_lib_um.chm>以及SD简易规格文件<Physical Layer Simplified Specificatio

【STM32】使用SDIO进行SD卡读写(一)-初步认识SD卡

先介绍几个协会的网站,里面有相关的文件 多媒体卡协会网站:www.mmca.org(STM32F4的SDIO支持的一种通讯,但不是本文的重点) SD卡协会网站:www.sdcard.org CE-ATA:www.ce-ata.org(STM32F4的SDIO支持的一种通讯,但不是本文的重点) 我会着重在SD卡和SDIO协议的部分,以下图片截至SD卡协会网站 原本SD协议是用在存储上的(图片蓝底处),后来扩展了一个叫SDIO的协议(全名:Secure Digital Input and Outpu

SD卡格式化造成数据丢失的恢复方法

SD卡操作不当的情况会造成数据丢失,SD卡没有在干燥的存放环境中会造成数据丢失,数据丢失不可怕,重要的是使用正确的方法来进行数据恢复.请继续阅读本篇文章. SD卡格式化丢失数据的两种情况:1.自己动手格式化了SD卡:2.SD卡插入电脑后提示格式化: SD卡格式化的主要目的就是为了清空SD卡或者SD卡无法读写等问题.很多情况一般是由于不当拔插SD卡造成的.此时选择格式化SD卡的话也许能修复SD卡问题,但严重的问题是,格式化后会造成SD 卡上的数据丢失. 所以在使用SD卡的时候,SD卡正在读写操作的