zoukankan      html  css  js  c++  java
  • Android学习笔记_6_保存文件到SDCard

    一、加入访问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");
        }
    }

    执行结果如下:

  • 相关阅读:
    poj 2754 Similarity of necklaces 2 转换成多重背包,单调队列优化/ 二进制优化
    new和delete2
    new和delete1
    new和delete4
    new和delete3
    new(placement new)
    用例图中的Actor(参与者)一定是人吗?
    二维数组的函数参数传递
    二维指针动态创建二维数组(C/C++)
    OOD的五项基本原则——SOLID
  • 原文地址:https://www.cnblogs.com/lbangel/p/3438942.html
Copyright © 2011-2022 走看看