平时我们需要在手机上面存储想音频,视频等等的大文件,以前学过使用File进行存储(使用File操作进行存储);由于考虑到手机本身的存储空间小,这时候我们需要把文件存储在SDcard中,今天自己也学习了一下在android进行sdcard的存储使用方法;

首先如果要在程序中使用sdcard进行存储,我们必须要在AndroidManifset.xml文件进行下面的权限设置:

在AndroidManifest.xml中加入访问SDCard的权限如下:

  <!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

接着我们在使用SDcard进行读写的时候 会用到Environment类下面的几个静态方法

  1: getDataDirectory()  获取到Androi中的data数据目录
:getDownloadCacheDirectory() 获取到下载的缓存目录
:getExternalStorageDirectory() 获取到外部存储的目录 一般指SDcard
  :getExternalStorageState() 获取外部设置的当前状态 一般指SDcard,

android系统中对于外部设置的状态,我们比较常用的应该是 MEDIA_MOUNTED(SDcard存在并且可以进行读写)  MEDIA_MOUNTED_READ_ONLY (SDcard存在,只可以进行读操作)  当然还有其他的一些状态,可以在文档中进行查找到

  :getRootDirectory()  获取到Android Root路径
:isExternalStorageEmulated() 返回Boolean值判断外部设置是否有效
:isExternalStorageRemovable() 返回Boolean值,判断外部设置是否可以移除

【注】上面进行红色标记的方法,我们会常用

<span style="color:#ff0000;">Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)  代码中这句:我们对SDcard的状态进行判断,</span>

下面看实现SDCard进行文件读写操作的Demo:

package com.jiangqq.sdcard;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream; import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast; public class SDcardActivity extends Activity {
private Button bt1, bt2;
private EditText et1, et2; private static final String FILENAME = "temp_file.txt"; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bt1 = (Button) this.findViewById(R.id.bt1);
bt2 = (Button) this.findViewById(R.id.bt2);
et1 = (EditText) this.findViewById(R.id.et1);
et2 = (EditText) this.findViewById(R.id.et2);
bt1.setOnClickListener(new MySetOnClickListener());
bt2.setOnClickListener(new MySetOnClickListener());
} private class MySetOnClickListener implements OnClickListener { @Override
public void onClick(View v) {
File file = new File(Environment.getExternalStorageDirectory(),
FILENAME);
switch (v.getId()) {
case R.id.bt1:// 使用SDcard写操作
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) { try {
FileOutputStream fos = new FileOutputStream(file);
fos.write(et1.getText().toString().getBytes());
fos.close();
Toast.makeText(SDcardActivity.this, "写入文件成功",
Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(SDcardActivity.this, "写入文件失败",
Toast.LENGTH_SHORT).show();
}
} else {
// 此时SDcard不存在或者不能进行读写操作的
Toast.makeText(SDcardActivity.this,
"此时SDcard不存在或者不能进行读写操作", Toast.LENGTH_SHORT).show();
}
break; case R.id.bt2:// 使用SDcard读操作
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
try {
FileInputStream inputStream = new FileInputStream(file);
byte[] b = new byte[inputStream.available()];
inputStream.read(b);
et2.setText(new String(b));
Toast.makeText(SDcardActivity.this, "读取文件成功",
Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(SDcardActivity.this, "读取失败",
Toast.LENGTH_SHORT).show();
}
} else {
// 此时SDcard不存在或者不能进行读写操作的
Toast.makeText(SDcardActivity.this,
"此时SDcard不存在或者不能进行读写操作", Toast.LENGTH_SHORT).show();
}
break;
} } } }

下面截图效果:

Demo下载链接这里

Android 使用SDcard进行文件的读取的更多相关文章

  1. Android中使用SDcard进行文件的读取

    来自:http://www.cnblogs.com/greatverve/archive/2012/01/13/android-SDcard.html 平时我们需要在手机上面存储想音频,视频等等的大文 ...

  2. SDcard进行文件的读取

    平时我们需要在手机上面存储想音频,视频等等的大文件,以前学过使用File进行存储(使用File操作进行存储):由于考虑到手机本身的存储空间小,这时候我们需要把文件存储在SDcard中,今天自己也学习了 ...

  3. Android 文件的读取和写入

    (1)openFileInput和openFileOutput的使用 文件的使用,注意最后要用finally给关闭掉. openFileOutput:(写入文件,如果没有文件名可以创建,这里不需要判断 ...

  4. android 从assets和res中读取文件

    1. 相关文件夹介绍 在Android项目文件夹里面,主要的资源文件是放在res文件夹里面的.assets文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像xml,java文件被预编译, ...

  5. 【转】忙里偷闲写的小例子---读取android根目录下的文件或文件夹

    原文网址:http://www.cnblogs.com/wenjiang/p/3140055.html 最近几天真的是各种意义上的忙,忙着考试,还要忙着课程设计,手上又有外包的项目,另一边学校的项目还 ...

  6. 【转】读取android根目录下的文件或文件夹

    原文网址:http://my.oschina.net/Ccx371161810/blog/287823 读取android根目录下的文件或文件夹 SDK的操作 读取android根目录下的文件或文件夹 ...

  7. QLGame 2d Engine Android端环境搭建(通过jni读取assets目录的文件)

    QLGame 2d Engine win端已经实现了一个动物的动画了,初步的东西已经完成,考虑在Android端也实现这些基本的东西,这样跨平台的引擎也就实现了! 要在Android下编程,首先要实现 ...

  8. Android 开发中eclipse 下 DDMS 视图中 sdcard 中文件导入的处理

    首先需要说明下,这里说的sdcard的权限并不是指在Android application程序中设置sdcard的权限读 取问题.而是指在DDMS看到的目录下的那个sdcard目录的权限问题.     ...

  9. IOS Android支持中文与本地文件的读取写入

    转自http://www.xuanyusong.com/archives/1069 和http://www.benmutou.com/archives/2094 前几天有个朋友问我为什么在IOS平台中 ...

随机推荐

  1. 结构体的malloc与数组空间

    结构体的malloc 如果结构体中有指针,对结构体的malloc 和其指针成员变量的malloc是没有关系的 结构体malloc的是存储自己地址的 忘记了面试常考试的sizeof的几个主要点 ==== ...

  2. 上下问语句句柄Release地方

    OCI--在QUERY中 CLI--在FETCH中 在父类中定义了public—Release和protected—Release,protected—Release在public—Release中被 ...

  3. sbt的安装设置

    文章转载自http://my.oschina.net/u/915967/blog/146746 本文主要是windows平台的安装,linux环境操作类似. 首先到http://www.scala-s ...

  4. simple_factory

    #include <stdlib.h> #include <iostream> using namespace std; class Product { public: vir ...

  5. java将多个连续的空格转化成一个空格

    java将多个连续的空格转化成一个空格: System.out.println("a a".replaceAll(" + ", " ")); ...

  6. setTimeout/setInterval执行时机

    setTimeout()和setInterval()经常被用来处理延时和定时任务.setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式,而setInterval()则可以在每隔指定的 ...

  7. document.compatMode的CSS1compat

    document.compatMode BackCompat:标准兼容模式关闭.浏览器宽度:document.body.clientWidth: CSS1Compat:标准兼容模式开启. 浏览器宽度: ...

  8. nginx-url重写

    location /game_web{ if (!-e $request_filename){//请求不是文件或者目录 rewrite ^/game_web/(\/init/$ last; break ...

  9. 图片延迟加载库Layzr

    <!DOCTYPE html> <html> <head> <title>Layzr Demo</title> <script src ...

  10. vb6-很简单的配置密码验证提示

    '很简单的配置密码验证提示 Dim add As String add = Trim(InputBox("请输入配置密码", "报表配置")) If add = ...