Android(11、私有存储空间与公共存储空间)

本文详细介绍了Android中私有存储空间(专有,无需权限,用于应用数据)和公共存储空间(可共享,需权限,包括内部存储和外部存储)的区别,以及如何在AndroidManifest.xml中添加权限并操作存储卡上的图片文件。
摘要由CSDN通过智能技术生成

私有存储空间与公共存储空间概念

私有存储空间和公共存储空间是Android中两种不同类型的存储空间,用于存储应用程序的数据。

  1. 私有存储空间:

    • 私有存储空间是应用程序专用的,其他应用程序无法访问。
    • 私有存储空间适合存储应用程序的私有数据,如数据库文件、SharedPreferences文件、缓存文件等。
    • 私有存储空间位于应用程序的内部存储空间中,通常存储在/data/data/包名/目录下。
    • 使用私有存储空间时,应用程序可以直接读写文件,无需任何权限。
  2. 公共存储空间:

    • 公共存储空间是供所有应用程序共享的,可以被其他应用程序访问。
    • 公共存储空间适合存储公共数据,如照片、音频、视频等文件。
    • 公共存储空间分为两种类型:内部存储和外部存储。
      • 内部存储:位于设备的内部存储空间中,通常存储在/data/目录下。其他应用程序可以通过ContentProvider来访问内部存储中的文件。
      • 外部存储:位于设备的外部存储介质上,如SD卡。其他应用程序可以通过文件路径来访问外部存储中的文件。
    • 使用公共存储空间时,需要在AndroidManifest.xml文件中声明相应的权限,如READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限。

在开发中,根据具体的需求和数据的访问权限,可以选择使用私有存储空间或公共存储空间来存储和访问数据。对于应用程序的私有数据,应使用私有存储空间;对于需要与其他应用程序共享的数据,应使用公共存储空间。

笔记:

  • 私有存储空间是应用程序专用的,其他应用程序无法访问。
  • 私有存储空间适合存储应用程序的私有数据,如数据库文件、SharedPreferences文件、缓存文件等。
  • 私有存储空间位于应用程序的内部存储空间中,通常存储在/data/data/包名/目录下。
  • 使用私有存储空间时,应用程序可以直接读写文件,无需任何权限。
  • 公共存储空间是供所有应用程序共享的,可以被其他应用程序访问。
  • 公共存储空间适合存储公共数据,如照片、音频、视频等文件。
  • 公共存储空间分为内部存储和外部存储,内部存储位于设备的内部存储空间中,外部存储位于设备的外部存储介质上,如SD卡。
  • 使用公共存储空间时,需要在AndroidManifest.xml文件中声明相应的权限,如READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限。

在存储卡上读写图片文件

在存储卡上读写图片文件,可以使用公共存储空间来实现。下面是详细的笔记:

  1. 在AndroidManifest.xml文件中添加读写外部存储的权限:

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    
  2. 检查外部存储是否可用:

    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        // 外部存储可用
    } else {
        // 外部存储不可用
    }
    
  3. 获取外部存储的根目录:

    File externalStorageDir = Environment.getExternalStorageDirectory();
    
  4. 创建图片文件:

    String fileName = "my_image.jpg";
    File imageFile = new File(externalStorageDir, fileName);
    
  5. 写入图片数据:

    try {
        FileOutputStream fos = new FileOutputStream(imageFile);
        // 将图片数据写入输出流
        fos.write(imageData);
        fos.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    
  6. 读取图片数据:

    try {
        FileInputStream fis = new FileInputStream(imageFile);
        // 读取图片数据
        byte[] imageData = new byte[fis.available()];
        fis.read(imageData);
        fis.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    

注意事项:

  • 在使用外部存储时,需要进行权限检查,并在AndroidManifest.xml文件中声明相应的权限。
  • 需要检查外部存储是否可用,以免在没有外部存储的设备上出现异常。
  • 外部存储的根目录可以通过Environment.getExternalStorageDirectory()方法获取。
  • 创建图片文件时,可以指定文件名和存储路径。
  • 写入图片数据时,可以使用FileOutputStream来写入数据。
  • 读取图片数据时,可以使用FileInputStream来读取数据。

总结: 在存储卡上进行图片文件的读写操作,需要先获取外部存储的根目录,然后创建文件对象。通过FileOutputStream将图片数据写入文件,通过FileInputStream读取文件中的图片数据。需要注意权限的检查和外部存储的可用性。

  • 18
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值