Unity常用四个路径路径
Application.dataPath
Application.streamingAssetsPath
Application.persistentDataPath
Application.temporaryCachePath
Windows
Application.dataPath
路径一直到工程目录下Assets文件夹
举例:F:/UnityWork/TestAssetBundle/Assets
Application.streamingAssetsPath
路径一直到工程目录下Assets文件夹中的StreamingAssets文件夹
举例:F:/UnityWork/TestAssetBundle/Assets/StreamingAssets
Application.persistentDataPath
持久数据文件夹
举例:C:/Users/dell/AppData/LocalLow/DefaultCompany/TestAssetBundle
Application.temporaryCachePath
临时缓存文件夹
举例:C:/Users/dell/AppData/Local/Temp/DefaultCompany/TestAssetBundle
IOS
iOS和Mac OS X不同于Windows,app都是在一个沙盒空间中运行,每个app也有一个独立的数据存储空间,各app彼此不能互相访问、打扰。
app的独立数据存储目录下有三个文件夹:Documents,Library和tmp。
Application.dataPath
路径:/var/containers/Bundle/Application/app sandbox/xxx.app/Data
dataPath是app程序包安装路径,app本身就在这里,此目录是只读的
Application.streamingAssetsPath
路径:/var/containers/Bundle/Application/app sandbox/test.app/Data/Raw
streamingAssetsPath是dataPath下的Raw目录。
Application.persistentDataPath
路径:/var/mobile/Containers/Data/Application/app sandbox/Library/Caches
Documents目录,这个目录用于存储需要长期保存的数据,比如我们的热更新内容就写在这里。
需要注意的是,iCloud会自动备份此目录,如果此目录下写入的内容较多,审核的可能会被苹果拒掉。
Application.temporaryCachePath
路径:/var/mobile/Containers/Data/Application/app sandbox/Documents
Library目录,这个目录下有两个子目录,Caches和Preferences。
Caches:是一个相对临时的目录,适合存放下载缓存的临时文件,空间不足时可能会被 系统清除,Application.temporaryCachePath返回的就是此路径。我把热更新的临时文件 写在这里,等一个版本的所有内容更新完全后,再把内容转移到Documents目录。
Preferences:用于应用存储偏好设置,用NSUserDefaults读取或设置。
注意
tmp目录,临时目录,存放应用运行时临时使用的数据。
需要注意的是,以上无论临时、缓存或者普通目录,如果不需要的数据,都请删除。不要占用用户的存储空间,像微信就是坏榜样。
下面是各路径对应的OC访问方法
app安装路径:
[[NSBundle mainBundle] resourcePath]
app数据沙盒存储根目录:
NSHomeDirectory()
Documents:
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)Library:
NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES)Caches:
NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)
Tmp:
NSTemporaryDirectory()
Android
Application.dataPath
路径:/data/app/package name-1/base.apk
apk程序包目录:apk的安装路径,/data/app/package name-n/base.apk,
dataPath就是返回此目录。
Application.streamingAssetsPath
路径: jar:file:///data/app/package name-1/base.apk!/assets
内部存储目录: /data/data/package name-n/,用户自己或其它app都不能访问该目录。
打开会发现里面有4个目录(需要root)
Cache:缓存目录,类似于iOS的Cache目录 ,热更新临时文件在此目录
Databases:数据库文件目录
Files:类似于iOS的Documents目录 ,热更新在此目录
shared_prefs:类似于iOS的Preferences目录,用于存放常用设置,比如Unity3D的PlayerPrefs就存放于此
Application.persistentDataPath
路径:/storage/emulated/0/Android/data/package name/files
类似于iOS的Documents目录
Application.temporaryCachePath
路径:/storage/emulated/0/Android/data/package name/cache
缓存目录,类似于iOS的Cache目录 ,热更新临时文件在此目录