注意内部存储不是内存。内部存储位于系统中很特殊的一个位置,如果你想将文件存储于内部存储中,那么文件默认只能被你的应用访问到,且一个应用所创建的所有文件都在和应用包名相同的目录下。也就是说应用创建于内部存储的文件,与这个应用是关联起来的。当一个应用卸载之后,内部存储中的这些文件也被删除。从技术上来讲如果你在创建内部存储文件的时候将文件属性设置成可读,其他app能够访问自己应用的数据,前提是他知道你这个应用的包名,如果一个文件的属性是私有(private),那么即使知道包名其他应用也无法访问。 内部存储空间十分有限,因而显得可贵,另外,它也是系统本身和系统应用程序主要的数据存储所在地,一旦内部存储空间耗尽,手机也就无法使用了。所以对于内部存储空间,我们要尽量避免使用。Shared Preferences和SQLite数据库都是存储在内部存储空间上的。内部存储一般用Context来获取和操作。

       所有内部存储中保存的文件在用户卸载应用的时候会被删除。

一、 files

获取你app的内部存储空间,相当于你的应用在内部存储上的根目录。

2. Context.openFileInput()与Context.openFileOutput(),只能读取和写入files下的文件,返回的是FileInputStream和FileOutputStream对象。www.2cto.com


3. Context.fileList(),返回files下所有的文件名,返回的是String[]对象。

String[] files = Context.fileList();
for(String file : files)
{
    Log.e(TAG, "file is "+ file);
}

4. Context.deleteFile(String),删除files下指定名称的文件。

二、cache

1. Context.getCacheDir(),该方法返回/data/data/youPackageName/cache的File对象。

三、custom dir

getDir(String name, int mode),返回/data/data/youPackageName/下的指定名称的文件夹File对象,如果该文件夹不存在则用指定名称创建一个新的文件夹。