Android学习笔记_6_保存文件到SDCard

本文介绍如何在Android应用程序中实现SD卡文件的读写功能,包括添加必要的权限、判断SD卡状态及保存文件的具体实现。同时,文章还介绍了如何引入单元测试并编写相应的测试代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、加入访问sdcard的权限

Environment.getExternalStorageState()方法用于获取SDCard的状态,如果手机装有SDCard,并且可以进行读写,那么方法返回的状态等于Environment.MEDIA_MOUNTED。
Environment.getExternalStorageDirectory()方法用于获取SDCard的目录,当然要获取SDCard的目录,你也可以这样写:
File sdCardDir = new File("/mnt/sdcard"); //获取SDCard目录
File saveFile = new File(sdCardDir, "itcast.txt"); 
//上面两句代码可以合成一句: File saveFile = new File("/mnt/sdcard/itcast.txt");

 

  在Shared中,路径是不需要自己填写的。因为要保存到内存中去,所以需要自己填写路径。绝对路径是不被推荐的。在Android2.2之前,sdCard的路径都是“/sdcard”在android2.2以及之后的版本中,路径都换成了“/mnt/sdcard”。为了兼容之前的版本,在android中有着一个镜像文件,将“/sdcard”指向了"/mnt/sdcard"。 

  android的方法中提供了获取外储存文件的方法,就是Environment.getExternalStorageDirecttory().还有一点要注意的事,保存到sdcard中文件的时候,需要获取系统的允许,在Mainfest.xml文件中,添加文件删除和创建的允许。在</application>下增加:

    <!-- 加入SDCARD的删除文件权限 -->
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <!-- 加入SDCARD的写入数据权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

二、引入单元测试

 

<!-- 在Mainfest.xml文件中增加,导入library的使用(AndroidUnit) -->
   <uses-library android:name="android.test.runner" />
<!-- 为savefiletosdcard这个包增添单元测试说明 -->
   <instrumentation
       android:name="android.test.InstrumentationTestRunner"
       android:targetPackage="com.android.savefiletosdcard" >
   </instrumentation>
<!-- 然后编写测试类,需要继承AndroidTestCase类。 -->

三、编写业务层代码

 

    /**
     * 保存文件到sdcard,需要使用FileOutputStream对象
      * 保存到sdcard的文件,可以让每个应用访问,不受限制。
      * @param filename
     * @param content
     * @throws Exception
     */
    public void saveToSDCard(String filename,String content) throws Exception{
//        File file = new File(new File("/mnt/sdcard"),filename);
        //获取sdcard目录
        File file = new File(Environment.getExternalStorageDirectory(),filename);
        FileOutputStream fos = new FileOutputStream(file);
        fos.write(content.getBytes());
        fos.close();
    }

 

    //判断sdcard状态,并且允许读写
     if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
         saveToSDCard(nameString, contentString);
     }

四、编写测试代码

 

public class SDCardTest extends AndroidTestCase {
    
    public void testSaveToSDCard() throws Exception{
        FileService fileService = new FileService(getContext());
        fileService.saveToSDCard("11.txt", "abcdef");
    }
}

 

执行结果如下:

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值