Android导出文件位置讨论

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目录,表示由神马笔记管理的目录。

二、如何命名文件?

几种常见的文件命名方式

  1. 用户定义的名称——Title

  2. 保存时的时间——Time

  3. 数据表中的唯一编号——ID

  4. 通用唯一识别码——UUID

第1种方式是由用户定义。

另外3种方式由应用定义,通常为避免重复文件名使用的技巧。

既然是共享文档,优先考虑用户容易找到文件这一需求。

因此,采用第1种方式,使用用户定义的名称命名文件。

三、覆盖或者连续编号?

有几种情况下,会出现文件同名的情况。

  1. 用户命名了同名笔记;
  2. 连续导出同一个笔记;

目前,神马笔记在这2种情况下会出现同名文件。

这种情况下,是采用覆盖方式,或者连续编号方式导出文件?

神马笔记采用了覆盖方式。

考虑到导出文件的临时性,以及用户可以再次导出以获取新的导出文件。

覆盖的方式更有能方便用户定位文件。

连续编号方式则可能导致用户定位到错误的文件。

综合考虑下,覆盖方式更适用于导出情况。

四、Finally

~人生若只如初见~何事秋风悲画扇~