android中的文件操作详解以及内部存储和外部存储

合集下载

安卓系统文件夹详细结构及其文件解析

安卓系统文件夹详细结构及其文件解析

安卓系统文件夹详细结构及其文件解析安卓系统的文件夹结构是一个非常复杂的层次结构,涵盖了各种各样的文件和文件夹,用于管理设备的各种功能和资源。

下面是对安卓系统文件夹结构的详细解析。

1.根目录:- /system:系统级文件夹,包含了系统的核心组件和应用程序。

其中最重要的文件是/ system / bin / 和/ system / xbin / 中的二进制可执行文件。

- /data:包含了应用程序和用户数据的文件夹。

每个应用程序都会被分配一个唯一的文件夹,其中包含了该应用程序的所有数据。

- /cache:用于存储临时文件和缓存文件。

- /mnt:用于挂载外部存储设备和其他文件系统。

2. /system目录:- /system/bin:包含了系统级的可执行文件,例如adb、mount等。

- /system/etc:包含了一些系统配置文件,例如hosts文件用于域名解析。

- /system/framework:包含了系统框架的核心文件,例如Android 的API类库和资源文件。

- /system/lib:包含了系统级的共享库,例如图形渲染库、音频库等。

- /system/media:包含了系统的多媒体资源文件,例如系统的铃声、壁纸等。

- /system/usr:包含了一些系统级的用户应用程序。

3. /data目录:- /data/app:包含了已安装的应用程序的APK文件。

- /data/data:包含了应用程序的数据文件,包括数据库、偏好设置等。

- /data/cache:包含了应用程序的缓存文件。

- /data/misc:包含了一些杂项的系统数据,例如wifi配置文件。

- /data/system:包含了系统级的数据,例如安全证书、用户配置等。

4. /cache目录:- /cache/dalvik-cache:包含了Dalvik虚拟机的缓存文件,用于提高应用程序的启动速度。

- /cache/recovery:包含了刷机时使用的恢复模式的相关文件。

安卓系统文件夹结构及其文件解析(详细)

安卓系统文件夹结构及其文件解析(详细)

安卓系统文件夹及其文件解析打开Android文件管理器,会发现里面数十个英文名称命名的文件夹罗列其中,很多功能我们可以从其名字上略有所知,内部大批量的文件却让我们有些一头雾水。

这些文件是什么?有什么用?我们能不能删?这些都是我们脑中充满疑问的。

现在将将Android手机内部文件夹的架构和各文件的功能描述介绍给大家,让大家自己手机的内部资源有个比较透彻的理解,同时也避免了用户误删造成的数据丢失和系统崩溃。

【文件夹功能简介】\system\app这个里面主要存放的是常规下载的应用程序,可以看到都是以APK格式结尾的文件。

在这个文件夹下的程序为系统默认的组件,自己安装的软件将不会出现在这里,而是\data\文件夹中。

\system\bin这个目录下的文件都是系统的本地程序,从bin文件夹名称可以看出是binary二进制的程序,里面主要是Linux 系统自带的组件(命令)\system\etc从文件夹名称来看保存的都是系统的配置文件,比如APN接入点设置等核心配置。

\system\fonts字体文件夹,除了标准字体和粗体、斜体外可以看到文件体积最大的可能是中文字库,或一些unicode字库,从T-Mobile G1上可以清楚的看到显示简体中文正常,其中DroidSansFallback.ttf文件大小。

\system\frameworkframework主要是一些核心的文件,从后缀名为jar可以看出是是系统平台框架。

\system\liblib目录中存放的主要是系统底层库,一些so文件,如平台运行时库。

\system\media\system\media\audio铃声音乐文件夹,除了常规的铃声外还有一些系统提示事件音。

\system\sounds默认的音乐测试文件,仅有一个test.mid文件,用于播放测试的文件。

\system\usr用户文件夹,包含共享、键盘布局、时间区域文件等。

\system\app这个里面主要存放的是常规下载的应用程序,可以看到都是以APK格式结尾的文件。

Android-14 Android文件操作(3)

Android-14 Android文件操作(3)

第13讲Android文件操作(3)打开新的Activity,在需要的时候传递数据。

所传的数据以key-value的形式来保存并传递传递时:Intent intent = new Intent(ListFileActivity.this, MainActivity.class); intent.putExtra("FileContent","传递的数据1");intent.putExtra("FileName", "传递的数据2");startActivity(intent);取出数据Intent intent = getIntent();String fileContent = intent.getStringExtra("FileContent");String fileName = intent.getStringExtra("FileName");if(fileContent!=null){et_filename.setText(fileName);et_content.setText(fileContent);}例2:修改上述例子,读取所存放的用户名和密码,若有,填入文本框,若无,不填。

步骤1、在FileService中编写两个方法,一个是读取文件,一个是删除文件public String [] readFile(String fileName) throws Exception{ FileInputStream in = context.openFileInput(fileName);byte [] buffer = new byte[in.available()];in.read(buffer);String str = new String(buffer);return str.split(","); //将获得的字符串以,隔开,分割为字符串数组} //文件中的内容拆分成用户名和密码public void dropFile() throws Exception{File file = new File(context.getFilesDir(),"test.txt"); //关联到程序目录/files/test.txt文件地址file.delete();}步骤2、修改Activity,在初始化界面的时候,调用readFile方法,如果有这个文件,就将内容填入界面。

安卓系统文件结构

安卓系统文件结构

安卓系统文件结构安卓系统的文件结构是由一系列目录和文件组成的。

了解这些文件结构可以帮助我们更好地理解安卓系统的运行机制和文件存储的方式。

安卓系统的根目录是/,也可以称为根目录。

在根目录下有一些重要的子目录和文件,包括以下几个:1. /system:这个目录包含了安卓系统的核心文件,包括操作系统的库文件、二进制文件、系统应用和系统服务等。

这个目录是只读的,普通用户无法更改其中的文件。

2. /data:这个目录存储了安卓系统的关键数据,包括应用程序的数据、设置以及用户的个人数据等。

这个目录是可写的,普通用户可以根据需要进行读写操作。

3. /proc:这个目录是一个虚拟目录,它包含了系统内核和进程相关的信息。

通过读取这些文件,我们可以获取到系统的一些运行状态和信息。

4. /dev:这个目录包含了设备文件,用于与硬件设备进行通信。

在这个目录下,每个硬件设备都会被表示为一个文件或者文件夹。

5. /mnt:这个目录包含了外部存储设备和挂载点的信息。

当我们连接一个外部设备,如SD卡或者USB设备时,它们会被挂载到这个目录下对应的文件夹内,以供使用。

除了这些重要的目录外,安卓系统还有一些其他的目录和文件,如以下几个:1. /boot:这个目录包含了启动安卓系统所需的文件,包括内核文件和引导程序。

2. /cache:这个目录存储了一些临时文件和缓存文件,如应用程序的缓存数据和系统的临时文件等。

3. /sbin:这个目录包含了一些系统管理员使用的工具和命令。

4. /vendor:这个目录包含了厂商定制的一些文件和配置,如厂商的驱动程序和特定的系统设置等。

总的来说,安卓系统的文件结构是一个层次化的结构,由多个目录和文件组成,并且每个目录和文件都有着特定的用途和功能。

通过了解这些目录和文件,我们可以更好地管理系统和应用程序,以及进行开发和调试。

android-数据存储之外部file存储(sdcard)

android-数据存储之外部file存储(sdcard)

android-数据存储之外部file存储(sdcard)⼀、基础概要 1、说明: 1>应⽤程序运⾏⽤到的数据⽂件可以保存到sd卡中 2>⽂件类型:任意 3>数据保存路径: 路径1:/storage/sdcard/Android/data/packageName/files 其它应⽤可以访问,应⽤卸载时删除 路径2:/storage/sdcard/xxx/ (表⽰⾃⼰创建的⽂件--xxx) 其它应⽤可以访问,应⽤卸载时不会被删除 2、相关API Environment 操作sd卡⼯具类: ---得到sd卡状态:Environment.getExternalStorageState() sd卡可读写的挂载状态值:Environment.MEDIA_MOUNTED ---得到sd卡路径:Environment.getExternalStorageDirectory() context.getExternalFilesDir(): ---得到 /mnt/sdcard/Android/data/package_name/files/xxx.txt 操作sd卡的权限: ---android.permission.WRITE_EXTERNAL_STORAGE 属于写的权限,但加上后也可读。

⼆、开发步骤(路径1)1、写数据 1>判断sd卡状态,如果是挂载的状态继续 2>获取输⼊⽂件名/内容 3>得到指定⽂件的OutputStream: .得到sd卡下的files路径 .组成完整路径 .创建FileOutputStream 4>写数据if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {String fileName="xrk";String fileContent="我不是向⽇葵";String filesPath=getExternalFilesDir(null).getAbsolutePath();String filePath=filesPath+"/"+fileName;FileOutputStream fos=new FileOutputStream(filePath);fos.write(fileContent.getBytes("utf-8"));fos.close();Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show();}else{Toast.makeText(MainActivity.this, "保存是啊⽐", Toast.LENGTH_SHORT).show();}2、读数据:if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {String fileName="xrk";String filesPath=getExternalFilesDir(null).getAbsolutePath();System.out.println("iueiudshcs"+filesPath);String filePath=filesPath+"/"+fileName;FileInputStream fis=new FileInputStream(filePath);ByteArrayOutputStream baos=new ByteArrayOutputStream();byte[] buffer=new byte[1024];int len=-1;while((len=fis.read(buffer))!=-1){baos.write(buffer, 0, len);}String content=baos.toString();Toast.makeText(MainActivity.this, "读取成功"+content, Toast.LENGTH_SHORT).show(); }else{Toast.makeText(MainActivity.this, "读取失败", Toast.LENGTH_SHORT).show();}三、开发步骤(路径2) 1、写数据if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {String fileName="谢荣康.txt";String fileContent="我不是向⽇葵";//得到指定⽂件的输出流String sdPath=Environment.getExternalStorageDirectory().getAbsolutePath();File file=new File(sdPath+"/atguigu");if (!file.exists()) {file.mkdirs();//创建⽂件夹}String filePath=sdPath+"/atguigu/"+fileName;String filesPath=getExternalFilesDir(null).getAbsolutePath();System.out.println("iueiudshcs"+filesPath);FileOutputStream fos=new FileOutputStream(filePath);fos.write(fileContent.getBytes("utf-8"));fos.close();Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show();}else{Toast.makeText(MainActivity.this, "保存是啊⽐", Toast.LENGTH_SHORT).show();} 2、读数据:if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {String fileName="谢荣康.txt";String sdPath=Environment.getExternalStorageDirectory().getAbsolutePath();String filePath=sdPath+"/atguigu/"+fileName;FileInputStream fis=new FileInputStream(filePath);ByteArrayOutputStream baos=new ByteArrayOutputStream();byte[] buffer=new byte[1024];int len=-1;while((len=fis.read(buffer))!=-1){baos.write(buffer, 0, len);}String content=baos.toString();fis.close();Toast.makeText(MainActivity.this, "读取成功"+content, Toast.LENGTH_SHORT).show(); }else{Toast.makeText(MainActivity.this, "读取失败", Toast.LENGTH_SHORT).show();。

安卓系统文件夹详细结构及其文件解析

安卓系统文件夹详细结构及其文件解析

安卓系统文件夹详细结构及其文件解析Android操作系统是一种基于Linux内核的开源操作系统,它的文件系统也是采用的Linux文件系统结构。

下面我将详细介绍安卓系统文件夹的结构及其文件解析。

1. /system- /bin: 该文件夹存放一些包含Android系统所需的可执行文件,如busybox等。

- /etc: 该文件夹存放一些系统配置文件,如/hosts文件、init.d 文件夹等。

- /lib: 该文件夹存放一些系统库文件,如libc.so、libm.so等。

- /usr: 该文件夹存放一些系统资源文件,如fonts文件夹、keylayout文件夹等。

2. /data- /app: 该文件夹存放已安装的应用程序,每个应用程序都会生成一个以包名命名的子文件夹。

- /cache: 该文件夹存放系统缓存文件,如应用程序缓存、系统临时文件等。

- /data: 该文件夹存放应用程序的数据文件,如数据库文件、SharedPreferences文件等。

- /system: 该文件夹存放一些系统级别的数据文件,如系统配置文件、系统数据库文件等。

- /block: 该文件夹存放块设备文件,如硬盘、U盘等。

- /input: 该文件夹存放输入设备文件,如键盘、鼠标等。

- /graphics: 该文件夹存放图形设备文件,如显示器等。

- /net: 该文件夹存放网络设备文件,如网卡等。

4. /proc- 各个进程的文件夹: 在/proc文件夹下,以进程ID命名的文件夹中存放有关该进程的信息,如进程的状态、资源占用情况等。

5. /sys- 各个设备的文件夹: 在/sys文件夹下,存放了系统的各个设备的相关信息,如CPU、内存、磁盘等设备。

6. /mnt- /sdcard: 该文件夹是外部存储的挂载点,通常被映射为手机的SD 卡。

- /usb: 该文件夹是USB存储的挂载点,用于连接USB存储设备。

7. /root- 该文件夹是Android系统的根目录。

Android8.0读取内部和外部存储以及外置SDcard的方法

Android8.0读取内部和外部存储以及外置SDcard的方法

Android8.0读取内部和外部存储以及外置SDcard的⽅法最近碰到询问我这个读取SDcard的问题,很久没有看这部分了,所以⼤致看了⼀下,顺便记录⼀下。

在Android 8.0上做了测试。

⼀般的Android App能读取的存储空间主要有三种:app⾃⼰的私有⽬录,也就是/data/data/《app ⽬录》。

读写这个⽬录不需要单独的权限。

每个app只能读写⾃⼰的⽬录,⽽不能读写其他app的⽬录。

Android通过Seandroid对权限进⾏了管理。

/sdcard。

这个其实是Android⼿机的internal storage。

也就是⼀般你买⼿机的时候,说⼿机是64GB的存储空间,就是说的这个地⽅。

这个地⽅的读写需要申请权限。

READ_EXTERNAL_STORAGE 是读, WRITE_EXTERNAL_STORAGE 是写,有写的权限就⾃动有读的权限。

这个权限是正对整个/sdcard,不区分⼦⽬录,也就是说⼀旦你申请权限你可以对整个/sdcard上的所有⽂件和⽬录有操作权限。

这个权限的管理会显⽰再settings⾥相应的app permission⾥。

外置sdcard这个对应的是你放⼊⼿机sdcard插槽的microSD卡。

有时候也叫removable storage。

Android⾥⽆法通过申请权限来获取读写的权利。

这⼀点和上⾯说的2不同。

因此,如果需要获取写权限,需要⽤户指定特定的⽬录单独授权。

这⾥举个简单的例⼦。

如果外置sdcard的路径是/mnt/extsdcard,然后上⾯有两个⽬录a和b,那么你可以让⽤户授权你写/mnt/extsdcard/a, 但是你还需要让⽤户再单独授权你写/mnt/extsdcard/b,也就是要授权两次。

具体的实现⽅法,就不多说了, google再github上给了个,其中的wiki页⾯有⽐较详细的描述。

特别要说明的是,由于这个没有对应的android permission,所以如果你得到授权以后,对应的⽬录路径不会显⽰再settings 中的app permission。

简述android中的存储方式及特点

简述android中的存储方式及特点

简述android中的存储方式及特点《Android中的存储方式及特点》Android中提供了多种不同的存储方式,用来满足不同应用程序的需求。

每种存储方式都有其独特的特点和适用场景。

以下将简述几种常用的存储方式及其特点。

1. SharedPreferences(共享首选项)SharedPreferences是Android提供的一种简单的键值对存储机制。

它适用于存储简单的配置信息,如用户的设置偏好、应用程序的状态等。

SharedPreferences存储方式简单高效,数据以XML形式存储在用户手机的文件系统中,但其容量有限,不适用于大量数据的存储。

2. 文件存储Android中的文件存储方式可以通过File类来实现。

文件存储适用于需要保存较大数据的情况,如日志文件、图片、音频等。

文件存储方式具有较高的灵活性和可扩展性,但需要手动处理文件读写的逻辑,并且需要权限管理。

3. 数据库存储(SQLite)Android提供了SQLite数据库作为持久化数据的存储方式。

SQLite是一种轻量级数据库引擎,适用于存储结构化数据。

它提供了SQL语句来进行数据的增删改查操作,并支持事务处理。

SQLite存储方式可以对数据进行高效的查询和排序,但相对于其他存储方式,其使用上稍微复杂些。

4. ContentProviderContentProvider是一种Android特有的存储方式,用于实现不同应用程序之间的数据共享。

通过ContentProvider,应用程序可以将自己的数据暴露给其他应用程序,并提供标准的CRUD(创建、读取、更新、删除)操作。

ContentProvider可以保护数据的安全性,并提供对外的数据访问接口。

5. 网络存储随着云服务的普及,Android中也提供了网络存储的方式。

通过网络存储,应用程序可以将数据存储在云端服务器上,实现数据的远程访问和共享。

网络存储方式需要考虑网络连接稳定性和数据安全性的问题,同时也需要对服务器端进行相应的开发。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

android中的文件操作详解以及内部存储和外部存储2014-01-01 02:28 6789人阅读评论(0) 收藏举报摘要其实安卓文件的操作和java在pc环境下的操作并无二致,之所以需要单独讲解是因为安卓系统提供了不同于pc的访问文件系统根路径的api,同时对一个应用的私有文件做了统一的管理。

根据我的经验,初学者在这部分感到很容易混淆内部存储和外部存储两个概念。

相对其实安卓文件的操作和java在pc环境下的操作并无二致,之所以需要单独讲解是因为安卓系统提供了不同于pc的访问文件系统根路径的api,同时对一个应用的私有文件做了统一的管理。

根据我的经验,初学者在这部分感到很容易混淆内部存储和外部存储两个概念。

相对路径和绝对路径在java中,关于相对路径和绝对路径是这样解释的,如果你很熟悉这部分以下灰色文字可以跳过:绝对路径是指书写文件的完整路径,例如d:\java\Hello.java,该路径中包含文件的完整路径d:\java以及文件的全名Hello.java。

使用该路径可以唯一的找到一个文件,不会产生歧义。

但是使用绝对路径在表示文件时,受到的限制很大,且不能在不同的操作系统下运行,因为不同操作系统下绝对路径的表达形式存在不同。

相对路径是指书写文件的部分路径,例如\test\Hello.java,该路径中只包含文件的部分路径\test和文件的全名Hello.java,部分路径是指当前路径下的子路径,例如当前程序在d:\abc下运行,则该文件的完整路径就是d:\abc\test。

使用这种形式,可以更加通用的代表文件的位置,使得文件路径产生一定的灵活性。

在Eclipse项目中运行程序时,当前路径是项目的根目录,例如工作空间存储在d:\javaproject,当前项目名称是Test,则当前路径是:d:\javaproject\Test。

在控制台下面运行程序时,当前路径是class文件所在的目录,如果class文件包含包名,则以该class文件最顶层的包名作为当前路径。

这是java在多数操作系统中这样操作,很显然是要我们尽可能的使用相对路径,但是在安卓中,其实多数情况下我们都是使用的绝对路径。

为什么呢?注意上面说到相对路径是以当前项目所在路径为当前路径,但在安卓中我们是不可能在项目所在路径目录下做任何操作的,因为普通java中我们的项目创建于服务器(pc也算是服务器),运行于服务器,我们当然能在服务器操作自己的文件目录。

但是安卓开发中,我们的项目一般是创建于自己工作的电脑,而运行于手机,既然apk已经运行于手机了,那项目就已经部署到手机上了,应该以apk在手机上的位置来确定相对路径,但我们好像们没有办法操作这个路径的,因为apk是在system目录下,就算可以操作,在这个目录下存取文件也是没有意义的,比如我写一个相册程序,图片肯定是放在外部存储中,而如果我要保存一个应用的一些设置数据,我是放在内部存储的data目录下,因此其实在安卓文件管理中,我们都是在操作绝对路径。

File类操作一个文件(读写,创建文件或者目录)是通过File类来完成的,这个操作和java中完全一致。

外部存储external storage和内部存储internal storage1.内部存储:注意内部存储不是内存。

内部存储位于系统中很特殊的一个位置,如果你想将文件存储于内部存储中,那么文件默认只能被你的应用访问到,且一个应用所创建的所有文件都在和应用包名相同的目录下。

也就是说应用创建于内部存储的文件,与这个应用是关联起来的。

当一个应用卸载之后,内部存储中的这些文件也被删除。

从技术上来讲如果你在创建内部存储文件的时候将文件属性设置成可读,其他app能够访问自己应用的数据,前提是他知道你这个应用的包名,如果一个文件的属性是私有(private),那么即使知道包名其他应用也无法访问。

内部存储空间十分有限,因而显得可贵,另外,它也是系统本身和系统应用程序主要的数据存储所在地,一旦内部存储空间耗尽,手机也就无法使用了。

所以对于内部存储空间,我们要尽量避免使用。

Shared Preferences和SQLite数据库都是存储在内部存储空间上的。

内部存储一般用Context来获取和操作。

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

如果是要创建一个文件,如下1 F ile file = newFile(context.getFilesDir(), filename);安卓还为我们提供了一个简便方法openFileOutput()来读写应用在内部存储空间上的文件,下面是一个向文件中写入文本的例子:String filename = "myfile";String string = "Hello world!";FileOutputStreamoutputStream;try{outputStream = openFileOutput(filename, Context.MODE_PRIVATE);outputStream.write(string.getBytes());outputStream.close();} catch(Exception e) {e.printStackTrace();} 内部存储的其他一些操作:A.列出所有的已创建的文件,这个可能不容易想到,Context 居然有这样的方法。

1 234 String[] files = Context.fileList();for(String file : files) { Log.e(TAG, "file is "+ file); } B.删除文件,能创建就要能够删除,当然也会提供了删除文件的接口,它也非常简单,只需要提供文件名if(Context.deleteFile(filename)) {Log.e(TAG, "delete file "+ filename + " sucessfully“);} else {Log.e(TAG, "failed to deletefile " + filename); }C.创建一个目录,需要传入目录名称,它返回一个文件对象用到操作路径 File workDir = Context.getDir(dirName, Context.MODE_PRIVATE); Log.e(TAG, "workdir "+ workDir.getAbsolutePath(); 总结一下文件相关操作,可以得出以下三个特点:1. 文件操作只需要向函数提供文件名,所以程序自己只需要维护文件名即可;2. 不用自己去创建文件对象和输入、输出流,提供文件名就可以返回File 对象或输入输出流3. 对于路径操作返回的都是文件对象。

2.外部存储:最容易混淆的是外部存储,如果说pc 上也要区分出外部存储和内部存储的话,那么自带的硬盘算是内部存储,U 盘或者移动硬盘算是外部存储,因此我们很容易带着这样的理解去看待安卓手机,认为机身固有存储是内部存储,而扩展的T 卡是外部存储。

比如我们任务16GB版本的Nexus 4有16G的内部存储,普通消费者可以这样理解,但是安卓的编程中不能,这16GB仍然是外部存储。

所有的安卓设备都有外部存储和内部存储,这两个名称来源于安卓的早期设备,那个时候的设备内部存储确实是固定的,而外部存储确实是可以像U盘一样移动的。

但是在后来的设备中,很多中高端机器都将自己的机身存储扩展到了8G以上,他们将存储在概念上分成了"内部internal" 和"外部external" 两部分,但其实都在手机内部。

所以不管安卓手机是否有可移动的sdcard,他们总是有外部存储和内部存储。

最关键的是,我们都是通过相同的api 来访问可移动的sdcard或者手机自带的存储(外部存储)。

外部存储虽然概念上有点复杂,但也很好区分,你把手机连接电脑,能被电脑识别的部分就一定是外部存储。

关于外部存储,我觉得api中在介绍Environment.getExternalStorageDirectory()方法的时候说得很清楚:don't be confused by the word "external" here. This directory can better be thought as media/shared storage. It is a filesystem that can hold a relatively large amount of data and that is shared across all applications (does not enforce permissions). Traditionally this is an SD card, but it may also be implemented as built-in storage in a device that is distinct from the protected internal storage and can be mounted as a filesystem on a computer.看不懂没关系,其实跟我说的意思差不多,只是觉得说得比较形象,不知道是我的表述问题,还是英文在逻辑解释方面比汉语强,因为白话文其实是被阉割的汉语。

外部存储中的文件是可以被用户或者其他应用程序修改的,有两种类型的文件(或者目录):1.公共文件Public files:文件是可以被自由访问,且文件的数据对其他应用或者用户来说都是由意义的,当应用被卸载之后,其卸载前创建的文件仍然保留。

比如camera应用,生成的照片大家都能访问,而且camera不在了,照片仍然在。

如果你想在外存储上放公共文件你可以使用getExternalStoragePublicDirectory()public File getAlbumStorageDir(String albumName) {// Get the directory for the user's public pictures directory.File file = newFile(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES), albumName);if(!file.mkdirs()) {Log.e(LOG_TAG, "Directory not created");}returnfile;}在上面的代码中我们创建获得了存放picture的目录,并且新创建一个albumName文件。

相关文档
最新文档