私有存储空间与公共存储空间概念
私有存储空间和公共存储空间是Android中两种不同类型的存储空间,用于存储应用程序的数据。
-
私有存储空间:
- 私有存储空间是应用程序专用的,其他应用程序无法访问。
- 私有存储空间适合存储应用程序的私有数据,如数据库文件、SharedPreferences文件、缓存文件等。
- 私有存储空间位于应用程序的内部存储空间中,通常存储在/data/data/包名/目录下。
- 使用私有存储空间时,应用程序可以直接读写文件,无需任何权限。
-
公共存储空间:
- 公共存储空间是供所有应用程序共享的,可以被其他应用程序访问。
- 公共存储空间适合存储公共数据,如照片、音频、视频等文件。
- 公共存储空间分为两种类型:内部存储和外部存储。
- 内部存储:位于设备的内部存储空间中,通常存储在/data/目录下。其他应用程序可以通过ContentProvider来访问内部存储中的文件。
- 外部存储:位于设备的外部存储介质上,如SD卡。其他应用程序可以通过文件路径来访问外部存储中的文件。
- 使用公共存储空间时,需要在AndroidManifest.xml文件中声明相应的权限,如READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限。
在开发中,根据具体的需求和数据的访问权限,可以选择使用私有存储空间或公共存储空间来存储和访问数据。对于应用程序的私有数据,应使用私有存储空间;对于需要与其他应用程序共享的数据,应使用公共存储空间。
笔记:
- 私有存储空间是应用程序专用的,其他应用程序无法访问。
- 私有存储空间适合存储应用程序的私有数据,如数据库文件、SharedPreferences文件、缓存文件等。
- 私有存储空间位于应用程序的内部存储空间中,通常存储在/data/data/包名/目录下。
- 使用私有存储空间时,应用程序可以直接读写文件,无需任何权限。
- 公共存储空间是供所有应用程序共享的,可以被其他应用程序访问。
- 公共存储空间适合存储公共数据,如照片、音频、视频等文件。
- 公共存储空间分为内部存储和外部存储,内部存储位于设备的内部存储空间中,外部存储位于设备的外部存储介质上,如SD卡。
- 使用公共存储空间时,需要在AndroidManifest.xml文件中声明相应的权限,如READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限。
在存储卡上读写图片文件
在存储卡上读写图片文件,可以使用公共存储空间来实现。下面是详细的笔记:
-
在AndroidManifest.xml文件中添加读写外部存储的权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-
检查外部存储是否可用:
String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { // 外部存储可用 } else { // 外部存储不可用 }
-
获取外部存储的根目录:
File externalStorageDir = Environment.getExternalStorageDirectory();
-
创建图片文件:
String fileName = "my_image.jpg"; File imageFile = new File(externalStorageDir, fileName);
-
写入图片数据:
try { FileOutputStream fos = new FileOutputStream(imageFile); // 将图片数据写入输出流 fos.write(imageData); fos.close(); } catch (IOException e) { e.printStackTrace(); }
-
读取图片数据:
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读取文件中的图片数据。需要注意权限的检查和外部存储的可用性。