Delphi开发安卓App之文件路径

应用的私有存储空间

Android下,你的应用是被运行在一个沙盒中的,

默认的权限只能存取自己应用的文档目录,

不能存取外部的存储空间的。

文档目录是应用的私有存储空间,

用于存储私密的数据,

比如配置文件、当前所登录用户的个人信息、聊天数据等,

应用卸载后会随之删除,

当然,其他应用也不能访问你应用的私有存储空间。

Delphi跨平台路径操作TPath

Delphi有一个System.IOUtils单元,

里面有一个TPath,是一个跨平台的路径操作结构体,

里面有获取常用路径的静态方法(不需要创建直接可以调用的方法)。

因为通常情况下,我们开发的应用会先在Windows平台下进行测试,

所以先来看一下这些方法在Windows平台下都指向哪些目录:

GetHomePath:

C:\Users\ggggcexx\AppData\Roaming

GetDocumentsPath:

C:\Users\ggggcexx\Documents

GetSharedDocumentsPath:

C:\Users\Public\Documents

GetLibraryPath:

C:\MyFiles\OrangeUIProduct\项目名称\APP\Win32\Debug\

GetCachePath:

C:\Users\ggggcexx\AppData\Local

GetPublicPath:

C:\ProgramData

GetPicturesPath:

C:\Users\ggggcexx\Pictures

GetSharedPicturesPath:

C:\Users\Public\Pictures

GetCameraPath:

C:\Users\ggggcexx\Pictures

GetSharedCameraPath:

C:\Users\Public\Pictures

GetDownloadsPath:

C:\Users\ggggcexx\Downloads

GetSharedDownloadsPath:

C:\Users\Public\Downloads

再来看下安卓平台下面都指定哪些目录,

GetHomePath:

/data/user/0/com.embarcadero.FirstAidExpert_FMX_D11/files

GetDocumentsPath:

/data/user/0/com.embarcadero.FirstAidExpert_FMX_D11/files

GetSharedDocumentsPath:

/storage/emulated/0/Documents

GetLibraryPath:

/data/app/com.embarcadero.FirstAidExpert_FMX_D11-wlgPkLmXf6nZlWnaSyFsnw==/lib/arm

GetCachePath:

/data/user/0/com.embarcadero.FirstAidExpert_FMX_D11/cache

GetPublicPath:

/storage/emulated/0/Android/data/com.embarcadero.FirstAidExpert_FMX_D11/files

GetPicturesPath:

/storage/emulated/0/Android/data/com.embarcadero.FirstAidExpert_FMX_D11/files/Pictures

GetSharedPicturesPath:

/storage/emulated/0/Pictures

GetCameraPath:

/storage/emulated/0/Android/data/com.embarcadero.FirstAidExpert_FMX_D11/files/DCIM

GetSharedCameraPath:

/storage/emulated/0/DCIM

GetDownloadsPath:

/storage/emulated/0/Android/data/com.embarcadero.FirstAidExpert_FMX_D11/files/Download

GetSharedDownloadsPath:

/storage/emulated/0/Download

其中,

GetDocumentsPath就是应用的文档目录(私有存储空间),

如果你要保存文件,一般将文件保存在文档目录。

在Android下,GetHomePath和GetDocumentsPath都指向同一个目录

GetCachePath是缓存目录,可以保存比如临时下载的网络图片,

手机上的清除应用缓存就是清理的这个目录。

还有一些带Shared的目录,

GetSharedDocumentsPath、GetSharedPicturesPath、GetSharedCameraPath、GetSharedDownloadsPath,

这些则是可以与其它应用共享的目录,都保存在外部存储空间中,

其他应用可以访问到它们。

路径分隔符

需要注意的是,安卓系统下面路径分隔符和Windows下不一样,

Windows下是\,Anroid下面是/,

那么我们平时写代码要拼路径的时候,该怎么办呢?

Delphi已经帮我们考虑好了,

大家统一用常量PathDelim即可。

比如你要将当前登录用户的账号密码保存到Config.ini中,

那么你就可以通过TPath.GetDocumentsPath+PathDelim+’Config.ini’来访问它。