Android导出文件位置讨论
前面的几篇文章讨论了共享功能的一些技术问题。
这篇文章讨论一下共享的图片、文本、Markdown保存位置的问题。
一、系统定义的文件夹或者自定义文件夹?
Android定义了以下一些通用目录。在Environment
中可以找到这些常量定义。
常量名 | 值 | 含义 |
---|---|---|
DIRECTORY_PICTURES | Pictures | 图片 |
DIRECTORY_DOCUMENTS | Documents | 文档 |
DIRECTORY_DOWNLOADS | Download | 下载 |
DIRECTORY_MUSIC | Music | 音乐 |
DIRECTORY_MOVIES | Movies | 电影 |
DIRECTORY_DCIM | DCIM | 拍照及摄像 |
…… |
导出的数据文件是应该保存在系统定义的目录之内?或者创建自己的顶级目录存放文件?
神马笔记采用的系统预定义的目录。
使用自定义的顶级目录,会在根目录中创建一堆APP相关的文件夹。
这些文件夹本身没有太多的含义,只是表示XXX应用的文件夹而已。
因此,神马笔记倾向与在系统预定义的目录中创建自身的顶级目录。
例如:
-
Pictures/WhatsNote:图片
-
Documents/WhatsNote/Text:文本
-
Documents/WhatsNote/Markdown:Markdown(包括Hexo)
图片在Pictures文件夹内,文本及Markdown在Documents文件夹内。
之后再创建WhatsNote目录,表示由神马笔记管理的目录。
二、如何命名文件?
几种常见的文件命名方式
-
用户定义的名称——Title
-
保存时的时间——Time
-
数据表中的唯一编号——ID
-
通用唯一识别码——UUID
第1种方式是由用户定义。
另外3种方式由应用定义,通常为避免重复文件名使用的技巧。
既然是共享文档,优先考虑用户容易找到文件这一需求。
因此,采用第1种方式,使用用户定义的名称命名文件。
三、覆盖或者连续编号?
有几种情况下,会出现文件同名的情况。
- 用户命名了同名笔记;
- 连续导出同一个笔记;
目前,神马笔记在这2种情况下会出现同名文件。
这种情况下,是采用覆盖方式,或者连续编号方式导出文件?
神马笔记采用了覆盖方式。
考虑到导出文件的临时性,以及用户可以再次导出以获取新的导出文件。
覆盖的方式更有能方便用户定位文件。
连续编号方式则可能导致用户定位到错误的文件。
综合考虑下,覆盖方式更适用于导出情况。
四、Finally
~人生若只如初见~何事秋风悲画扇~