开发环境:

Win XP + eclipse-jee-helios(版本号3.6) + ADT(版本10.0.1) + Android SDK(版本10);

模拟器及真机测试环境:Android2.2


   在Android学习笔记之文件的保存与读取中学习了数据的保存,它是将数据直接保存到手机自带的存储空间,这些一般是比较小的文件。那么如何将较大的数据保存到SDCard中呢?

   利用Android学习笔记之文件的保存与读取中创建的File项目,实现将数据保存到SDCard中。

  • File项目的目录结构如图

    152848267.png

  • 在业务类中FileService.java中,写一个保存到SDCard的方法saveToSDCard(),代码如下

    //保存数据到SDCard
        public void saveToSDCard(String filename, String content) throws Exception{
        //得到文件对象,找到SDCard的路径
        //File file = new File("mnt/sdcard", filename);
        File file = new File(Environment.getExternalStorageDirectory(), filename);
        //得到文件输出流对象
        FileOutputStream outStream = new FileOutputStream(file);
        outStream.write(content.getBytes());
        outStream.close();
    }


  • 在MainActivity.java类中,调用保存saveToSDCard()方法将数据保存到SDCard,代码如下:

    try {
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {       
        service.saveToSDCard(filename,content);//保存数据到SDCard
        Toast.makeText(getApplication(), R.string.success, 1).show();//保存成功
        }else{                       
    Toast.makeText(getApplication(), R.string.sdcarderror, 1).show();//保存失败              
    } catch (Exception e) {
       Toast.makeText(getApplication(), R.string.fail, 1).show();
       e.printStackTrace();
    }


  • 在清单文件AndroidManifest.xml中申明往SDCard创建文件和写入数据的权限:

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


  • 将应用部署到模拟上,当点击保存时,就会在/mnt/sdcard下创建保存的文件

  • 154922447.png