Android中的File

内部存储与外部存储

内部存储

用户无法在手机文件夹访问的目录 /data,此目录下常用的有(不同rom会有差异)

  • /data/app用于保存已安装应用的apk文件;

  • /data/data保存已安装应用的app信息;

  • /data/data/package name保存具体应用下的信息(如SharePreferences、DataBase等),当app卸载时,此目录及其以下文件全部删除。

外部存储

用户通过手机文件夹访问的目录,如DCIM相册文件夹,Download下载文件的位置

外部存储包含出厂时自带的存储,也包含sdcard。

外部存储(除External获取的)的数据与app无关联性,知道具体路径便可访问。因此app创建的文件夹无法在app卸载时被删除。长此以往,除用户主动删除,外存的空间会逐渐减少。

获取

1、getCacheDir() ----> /data/data/package name/cache/
2、getFilesDir() ----> /data/data/package name/files/
3、getExternalCacheDir() ----> 外部存储路径/Android/data/package name/cache/
4、getExternalFilesDir() ----> 外部存储路径/Android/data/package name/files/
5、getExternalStorageDirectory() ----> 非scared路径的外部存储路径

1、2、3、4跟随app的包名创建的目录,清除缓存或卸载会将数据清除

1、2、3、4不需要申请权限,

3、4、5需要判断是否存在外置SD(以前需要判断scared是否已插入,但随着发展android机基本都挂有外部存储)

5、需要自己手动维护文件结构

6.0之后动态申请的权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

文件操作

避免重复造轮子,取其我认为需要记录的内容
Java和Android文件操作

File(File dir, String name)
File(String path)
File(String dirPath, String name)
File(URI uri)
这些构造方法的实质都是一样的,就是构造一个File实例,必须提供一个完整的文件路径。
构造了一个File实例,并不是说就新建了一个文件或文件夹,这个File实例,只是实际系统内文件实体的一个代表。
重要方法:public boolean exists() 判断文件或文件夹是否存在

public boolean isFile() 判断是否为文件

public boolean isDirectory 判断是否为文件夹

public boolean createNewFile() 根据制定的路径和文件名创建一个新的,空的文件

public boolean mkdir() 根据制定的路径创建文件夹 (一级操作)

public boolean mkdirs() 根据制定的路径创建文件夹 (多级操作)

public boolean delete() 删除文件或文件夹

public boolean renameTo(File dest) 重命名文件或文件夹

public long length() 获得文件的长度,单位为 byte(文件夹不可用)

public String getName() 获得文件或文件夹的名字

public String getAbsolutePath() 获得文件或文件夹的绝对路径

pubic String getPath() 获得文件或文件夹的路径

public File[] listFiles() 返回文件夹内所有的File 对象

public String[] list() 返回文件夹内所有的文件或文件夹的名字

读写操作

Context已经实现了快捷方法:

public FileInputStream openFileInput(String name)
public FileOutputStream openFileOutput(String name, int mode)

查看源码会得知文件在getFilesDir()目录下。

模式:

  • 私有模式
    1、只能被创建这个文件的当前应用访问
    2、若文件不存在会创建文件;若创建的文件已存在则会覆盖掉原来的文件
    Context.MODE_PRIVATE = 0x0000;

  • 追加模式
    1、私有的
    2、若文件不存在会创建文件;若文件存在则在文件的末尾进行追加内容
    Context.MODE_APPEND = 0x8000;

  • 可读模式
    1、创建出来的文件可以被其他应用所读取
    Context.MODE_WORLD_READABLE=0x0001;

  • 可写模式
    1、允许其他应用对其进行写入。
    Context.MODE_WORLD_WRITEABLE=0x0002;

以上文件操作模式均针对保存在手机自带存储空间的文件。若文件存储在SDCard上,则不受读写控制。

读写操作中有FileInputStream、FileOutputStream两个流,但实际java中的流有两类。

流.png

字节流:读取的数据以字节为单位(byte),8bit

字符流:读取的数据以字符为单位(char),16bit

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,585评论 18 139
  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,362评论 0 4
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,350评论 0 17
  • 我在适配iPhone x的时候,我修改了searchBar的背景颜色后,在编辑状态总是出现一条黑线 未处理背景色的...
    落寒z阅读 409评论 0 1
  • 文/G哥 今天跟大家聊一个很有意思的话题:为什么在学语言上的时候,我们首先学会的,往往是一些骂人的话呢? 你一定也...
    G哥阅读 1,353评论 1 5