Unity \ Android \ Ios 对应的各个目录

===============
unity中的文件存储路径与各平台(Android,iOS)的关系
https://blog.csdn.net/qq_37240033/article/details/54906715


感觉 IOS 平台 Application.persistentDataPath 应该是 Document ,而不是 NSHomeDirectory()


android 平台
Application.dataPath     /data/app/xxx.xxx.xxx.apk
Application.streamingAssetsPath     jar:file:///data/app.xxx.xxx.xxx.apl/!/assets
Application.persistentDataPath     /data/data/xxx.xxx.xxx/files
Application.temporaryCachePath     /data/data/xxx.xxx.xxx/cache


IOS 平台
Application.dataPath     Appliocation/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data
Application.streamingAssetsPath     Appliocation/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data/Raw
Application.persistentDataPath     Appliocation/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents
Application.temporaryCachePath     Appliocation/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Library/Caches


重点说的是Application.presistentDataPath方法,因为这个问题在Android中困扰我很久,
先说说iOS端,很简单,就是存储到iOS的沙盒路径中
对应的iOS的方法是 NSString *path_document = NSHomeDirectory();
path_document的路径与Application.presistentDataPath的路径是一样的
对于Android端,有两种可能
一种是Android的沙盒路径,一种是SD卡路径,这跟你打包设置有关系
在打包面板中,有个Write Access
当我们选择Internal Only就是表示沙盒路径,/data/data/com.xxx.xxx/
对应的Android方法为 getFilesDir()
当我们选择SDCard时就表示存储到SD卡上,: /storage/emulated/0/Android/data/com.example.myapplication/files
对应的Android方法为 getExternalFilesDir()


=================
iOS存储数据到相应目录的问题
https://www.cnblogs.com/yilia/p/3433641.html

===============
IOS App文件保存目录
https://blog.csdn.net/huang627325/article/details/50548083

IOS系统为每一个App开辟独立的存储空间,也就是我们常说的沙盒(sandbox)。App保存目录结构可以分为如下4个:(1)xxx.app (2)Documents (3)Library (4)tmp
(1)xxx.app
该目录存放应用本身数据,以及程序打包的资源文件和一些本地文件, 程序的可执行程序和Plist文件也在该目录。获取该路径资源可以通过  [[NSBundlemainBundle]pathForResource:@"str"ofType:@"type"] 其中 str为文件名称、type为文件的指定类型。如png 、html等。
在开发webApp的过程中,一般前端开发者会使用通过命名不同的文件区分不同文件存放,如JS、CSS等等文件夹的命名,当把这些文件加入在本地,xxx.app不会分多级目录存储,所有的文件将保存根目录,所以在html引用的时候JS或者CSS等相关文件时,应当获取当前目录,而不是多层级目录。
如正确路径为
而不是
(2)Documents
苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)
NSString*docpath=[paths objectAtIndex:0];
(3)Library
Library 分为Preferences和Caches目录,Library多数用来保存一些配置文件。NSUserDefaults保存的数据会保存到
Library/Preferences目录下的一个plist文件中。Library/Caches用于存放缓存文件。 这个目录中的Preferences会被iTunes同步。
获取对应的路径步骤基本和Documents基本一样,区别在于传入的参数不一样
Caches:NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
Preferences:NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
(4)tmp
tmp:提供一个创建临时文件的地方。iPhone在重启时会清除所有的tmp文件。

==============
ios获取各种文件目录的路径
https://blog.csdn.net/qq_43361450/article/details/88955336?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-15.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-15.nonecase

// 获取沙盒主目录路径
NSString *homeDir = NSHomeDirectory();
// 获取Documents目录路径
NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
// 获取Library的目录路径
NSString *libDir = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
// 获取Caches目录路径
NSString *cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
// 获取tmp目录路径
NSString *tmpDir =  NSTemporaryDirectory();

================
iOS设备持久化存储各目录比较
https://www.jianshu.com/p/334bfc2ca25b

官方文档:

https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html
iOS设备的文件系统:

The iOS file system is geared toward apps running on their own. To keep the system simple, users of iOS devices do not have direct access to the file system and apps are expected to follow this convention.

iOS文件系统适用于自行运行的应用程序。为了保持系统简单,iOS设备的用户无法直接访问文件系统,并且应用程序应遵循此约定。
iOS标准目录:文件驻留的位置

出于安全考虑,iOS应用程序与文件系统的交互仅限于应用程序沙箱目录中的目录。在安装新应用程序期间,安装程序会在沙箱目录中为应用程序创建许多容器目录。每个容器目录都有一个特定的角色。包容器目录包含应用程序包,而数据容器目录包含应用程序和用户的数据。数据容器目录进一步划分为许多子目录,应用程序可以使用这些子目录对数据进行排序和组织。应用程序还可以在运行时请求访问其他容器目录(例如,iCloud容器)。这些容器目录构成了应用程序的文件系统主视图。图1-1显示了应用程序的沙箱目录的表示。
目录结构

通常禁止应用程序访问或创建容器目录之外的文件。此规则的一个例外是当应用程序使用公共系统接口访问用户的联系人或音乐等内容时。在这些情况下,系统框架使用帮助应用程序来处理读取或修改适当数据存储所需的任何与文件相关的操作。
目录详解:
文件详解
iOS应用可能会在其他目录Documents,Library和tmp目录。您可以这样做以更好地组织这些位置中的文件。
比较:


AppName的.app     这是应用程序的捆绑包。该目录包含应用程序及其所有资源,你无法写入此目录,为防止篡改, bundle 目录在安装时签名。写入此目录会更改签名并组织你的应用启动,但是没你可以获得对应用程序包中存储的任何资源的只读访问权限。有关更多信息,请参阅"资源编程指南"
iTunes或iCloud 不会备份此目录的内容,但是,iTunes 确实执行从 App Store 购买的任何应用程序的初始同步
Documents/         使用此目录存储用户生成的内容。该目录的内容可以通过文件共享提供给用户,因此,他的目录应该只宝航您可能希望向用户公开的文件。
该目录的内容由 iTunes 和 iCloud备份

==============
IOS中获取各种文件的目录路径的方法
https://blog.csdn.net/yishu_jay/article/details/12979999?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-11.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-11.nonecase

 iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么.

documents,tmp,app,Library。

(NSHomeDirectory()),

手动保存的文件在documents文件里

Nsuserdefaults保存的文件在tmp文件夹里


1、Documents 目录:您应该将所有de应用程序数据文件写入到这个目录下。这个目录用于存储用户数据或其它应该定期备份的信息。

2、AppName.app 目录:这是应用程序的程序包目录,包含应用程序的本身。由于应用程序必须经过签名,所以您在运行时不能对这个目录中的内容进行修改,否则可能会使应用程序无法启动。

3、Library 目录:这个目录下有两个子目录:Caches 和 Preferences
Preferences 目录:包含应用程序的偏好设置文件。您不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好.
Caches 目录:用于存放应用程序专用的支持文件,保存应用程序再次启动过程中需要的信息。

4、tmp 目录:这个目录用于存放临时文件,保存应用程序再次启动过程中不需要的信息。

获取这些目录路径的方法:
1,获取家目录路径的函数:
NSString *homeDir = NSHomeDirectory();
2,获取Documents目录路径的方法:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = [paths objectAtIndex:0];
3,获取Caches目录路径的方法:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachesDir = [paths objectAtIndex:0];
4,获取tmp目录路径的方法:
NSString *tmpDir = NSTemporaryDirectory();
5,获取应用程序程序包中资源文件路径的方法:
例如获取程序包中一个图片资源(apple.png)路径的方法:
NSString *imagePath = [[NSBundle mainBundle] pathForResource:@”apple” ofType:@”png”];
UIImage *appleImage = [[UIImage alloc] initWithContentsOfFile:imagePath];
代码中的mainBundle类方法用于返回一个代表应用程序包的对象。

iphone沙盒(sandbox)中的几个目录获取方式:

NSFileManager* fm=[NSFileManager defaultManager];
if(![fm fileExistsAtPath:[self dataFilePath]]){
 
//下面是对该文件进行制定路径的保存
[fm createDirectoryAtPath:[self dataFilePath] withIntermediateDirectories:YES attributes:nil error:nil];
 
//取得一个目录下得所有文件名
NSArray *files = [fm subpathsAtPath: [self dataFilePath] ];
 
//读取某个文件
NSData *data = [fm contentsAtPath:[self dataFilePath]];
 
//或者
NSData *data = [NSData dataWithContentOfPath:[self dataFilePath]];
}

==============
baidu     unity  ios 存储目录

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值