读书人

Android的内部储存和外部存储

发布时间: 2012-12-22 12:05:06 作者: rapoo

Android的内部存储和外部存储
使用内部存储

Android系统能够直接把文件存在设备的内部存储内。

默认情况下,保存在内部存储内的文件是应用程序私有的,其他应用程序(或用户)是无法访问的。

当用户卸载此应用程序时,内部存储的数据会一并清除。

往内部存储内写文件(写入到/data/data/com.xxx.xxx/files目录下,com.xxx.xxx为应用程序包名):

//要加权限<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>void createExternalStoragePrivateFile() {    File file = new File(getExternalFilesDir(null), "DemoFile.jpg");    try {        InputStream is = getResources().openRawResource(R.drawable.balloons);        OutputStream os = new FileOutputStream(file);        byte[] data = new byte[is.available()];        is.read(data);        os.write(data);        is.close();        os.close();    } catch (IOException e) {        Log.w("ExternalStorage", "Error writing " + file, e);    }}//要加权限<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>void deleteExternalStoragePrivateFile() {    File file = new File(getExternalFilesDir(null), "DemoFile.jpg");    if (file != null) {        file.delete();    }}boolean hasExternalStoragePrivateFile() {    File file = new File(getExternalFilesDir(null), "DemoFile.jpg");    if (file != null) {        return file.exists();    }    return false;}

getExternalFilesDir()方法有一个参数,如果传递null,则会得到应用程序的文件目录的根目录。如果传入其他(例如Environment.DIRECTORY_PICTURES)则会在/mnt/sdcard/Android/data/com.xxx.xxx/files目录下创建相应的文件夹(例如pictures文件夹),可以把上面的null替换成Environment.DIRECTORY_PICTURES试试

同样,在卸载应用的时候,文件会被删除

同样,这些文件是应用程序私有的

在外部存储内保存缓存文件(/mnt/sdcard/Android/data/com.xxx.xxx/cache目录下

例子的话只需要把上面例子中的getExternalFilesDir(null)替换为getExternalCacheDir()

同样,在卸载应用的时候,文件会被删除

同样,这些文件是应用程序私有的

在外部存储上保存共享文件

如果保存的文件不是应用程序所专有的,并且在应用程序被卸载时,不删除这些文件,那么就要把它们保存到外部存储器上的一个公共的目录上。这些目录位于外部存储器的根目录,如下:

Music/---媒体扫描器把在这个目录中找到所有媒体文件作为用户音乐。

Podcasts/---媒体扫描器把在这个目录中找到的所有媒体文件作为音/视频的剪辑片段。

Ringtones/---媒体扫描器把在这个目录中找到的所有媒体文件作为铃声。

Alarms/---媒体扫描器把在这个目录中找到的所有媒体文件作为闹钟的声音。

Pictures/---所有的图片(不包括那些用照相机拍摄的照片)。

Movies/---所有的电影(不包括那些用摄像机拍摄的视频)。

Download/---其他下载的内容。

例子的话只需要把上面例子中的getExternalFilesDir(null)替换为Environment.getExternalStoragePublicDirectory(),此方法需要一个参数来指定公共目录类型(如Environment.DIRECTORY_MUSIC、Environment.DIRECTORY_PICTURES、Environment.DIRECTORY_RINGTONES或其他的类型。如果需要,这个方法会创建适当的目录)


读书人网 >Android

热点推荐