Android读写SD卡

SD卡的读写是我们在开发Android 应用程序过程中最常见的操作。下面介绍SD卡的读写操作方式:

1. 获取SD卡的根目录

String  sdCardRoot = Environment.getExternalStorageDirectory().getAbsolutePath();
// 何问起 hovertree.com

2. 在SD卡上创建文件夹目录

/**
 * 在SD卡上创建目录
 */
public File createDirOnSDCard(String dir)
{
    File dirFile = new File(sdCardRoot + File.separator + dir +File.separator);
    Log.v("createDirOnSDCard", sdCardRoot + File.separator + dir +File.separator);
    dirFile.mkdirs();
    return dirFile;
}
// 何问起 hovertree.com

3. 在SD卡上创建文件

/**
 * 在SD卡上创建文件
 */
public File createFileOnSDCard(String fileName, String dir) throws IOException
{
    File file = new File(sdCardRoot + File.separator + dir + File.separator + fileName);
    Log.v("createFileOnSDCard", sdCardRoot + File.separator + dir + File.separator + fileName);
    file.createNewFile();
    return file;
}  // 何问起 hovertree.com

4.判断文件是否存在于SD卡的某个目录

/**
 * 判断SD卡上文件是否存在
 */
public boolean isFileExist(String fileName, String path)
{
    File file = new File(sdCardRoot + path + File.separator + fileName);
    return file.exists();
}  // 何问起 hovertree.com

5.将数据写入到SD卡指定目录文件

// 何问起 hovertree.com
/* 写入数据到SD卡中
     */
    public File writeData2SDCard(String path, String fileName, InputStream data)
    {
        File file = null;
        OutputStream output = null;  

        try {
            createDirOnSDCard(path);  //创建目录
            file = createFileOnSDCard(fileName, path);  //创建文件
            output = new FileOutputStream(file);
            byte buffer[] = new byte[2*1024];          //每次写2K数据
            int temp;
            while((temp = data.read(buffer)) != -1 )
            {
                output.write(buffer,0,temp);
            }
            output.flush();  

        } catch (Exception e) {
            e.printStackTrace();
        }
        finally{
            try {
                output.close();    //关闭数据流操作
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }  

        return file;
    } 

 one more important thing:

      对SD卡的操作,必须要申请权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

推荐:http://www.cnblogs.com/roucheng/p/3504465.html

时间: 2024-10-16 18:19:52

Android读写SD卡的相关文章

android读写SD卡封装的类

参考了网上的一些资源代码,FileUtils.java: package com.example.filereadwrite; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOut

Android——数据存储(四种方式之二)读写SD卡

Android--数据存储(四种方式) 1.SharedPrefereces 只能保存一些简单的数轻量级.XML  存储文件名, 数据保存在data/data/basepackage/shared_prefs/myopt.xml中    实例-收藏-记住密码自动登录 //一种轻量级的数据存储方式//通过KEY 存入数据--putxxxx(key,value) 取出数据--getxxxx(key  default) 2.读写SD卡  SD的根目录  适用于数据流读写 实现步骤:加入读写SD卡权限

android 操作SD卡上的文件

(1)说明:操作SD卡上的文件需要加入以下权限 在SD卡上创建和删除文件权限 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> 在SD卡上写入数据的权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 在sd卡上的文件操作和我上一篇文

Eclipse中查看Android模拟器SD卡目录

有时候用到Android模拟器来模拟SD卡相关操作,在Eclipse中可以直接查看SD卡目录: 首先,新建模拟器的时候要创建SD卡,存储的大小根据需要创建: 启动模拟器,在Eclipse中打开视图窗口:Window--Show View--File Explorer: 可以看到下面有mnt目录,mnt--sdcard 就是SD卡的目录, 也就是代码中 Environment.getExternalStorageDirectory()  的目录: 这样就可以很直观的看到代码对sd卡的操作,比如新建

android 往sd卡中写入文件

在调用前需要判断是否有写入权限 Environment类提供了比较丰富的方法 static File getDataDirectory() 获得android data的目录. static File getDownloadCacheDirectory() 获得下载缓存目录. static File getExternalStorageDirectory() 或者外部存储媒体目录. static File getExternalStoragePublicDirectory(String type

Android 判断SD卡是否存在及容量查询

Android 判断SD卡是否存在及容量查询的简单方法如下: 首先要在AndroidManifest.xml中增加SD卡访问权限 [html] view plaincopy <!-- 在SDCard中创建与删除文件权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <!-- 往SDCard写入数据权限 --> <uses-pe

Android 获取SD卡路径和判断SD卡是否存在

android获取sd卡路径方法: 不建议直接写死android sd卡的路径. public String getSDPath(){ File sdDir = null; boolean sdCardExist = Environment.getExternalStorageState() .equals(android.os.Environment.MEDIA_MOUNTED); //判断sd卡是否存在 if (sdCardExist) { sdDir = Environment.getEx

android 删除SD卡或者手机的缓存图片和目录

public static final String TEMP_PHOTO_FILE_NAME = "temp_photo.jpg"; private static String mSdRootPath = Environment.getExternalStorageDirectory().getPath(); /** * 删除SD卡或者手机的缓存图片和目录 */ public void deleteFile() { Log.i("INFO", mSdRootPat

Android获取SD卡总容量,可用大小,机身内存总容量及可用大小

public long getSDTotalSize() { /*获取存储卡路径*/ File sdcardDir= Environment.getExternalStorageDirectory(); /*StatFs 看文件系统空间使用情况*/ StatFs statFs=new StatFs(sdcardDir.getPath()); long blockSize= statFs.getBlockSizeLong(); long totalSize=statFs.getBlockCount