iOS沙盒使用总结

以你之姓@ 2022-06-01 13:58 449阅读 0赞

1沙盒机制

iPhone对于安装在上面的应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,这个区域就叫做沙盒。所有和该程序有关的文件都保存在这个独立,安全,封闭的空间(或者目录)。

2沙盒路径

通过代码可以在模拟器或者真机上找到路径,查看目录

在该目录下有四个文件夹Documents,Library(里边有Caches和Preferences),SystemData和tmp文件夹。

SouthEast

SouthEast 1

Documents目录

用于写入应用相关数据文件的目录,在ios中写入这里的文件能够与iTunes共享并访问,存储在这里的文件会自动备份到云端.

Library/Preferences

这保存应用程序的所有偏好设置iOS的Settings(设置),我们不应该直接在这里创建文件,

而是需要通过NSUserDefault这个类来访问应用程序的偏好设置。

Library/Caches

iTunes不会对这个目录的内容进行备份,一般存储的是缓存文件,例如图片视频等,此目录下的文件不会再应用程序退出时删除。

tmp

临时文件目录,在程序重新运行的时候,和开机的时候,会清空tmp文件夹。

3如何获取路径

获取沙盒路径用的方法NSSearchPathForDirectoriesInDomains

  1. NSArray<NSString *> *NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory, NSSearchPathDomainMask domainMask, BOOL expandTilde);
  2. typedef NS_ENUM(NSUInteger, NSSearchPathDirectory) {
  3. NSApplicationDirectory = 1, // supported applications (Applications)
  4. NSDemoApplicationDirectory, // unsupported applications, demonstration versions (Demos)
  5. NSDeveloperApplicationDirectory, // developer applications (Developer/Applications). DEPRECATED - there is no one single Developer directory.
  6. NSAdminApplicationDirectory, // system and network administration applications (Administration)
  7. NSLibraryDirectory, // various documentation, support, and configuration files, resources (Library)
  8. NSDeveloperDirectory, // developer resources (Developer) DEPRECATED - there is no one single Developer directory.
  9. NSUserDirectory, // user home directories (Users)
  10. NSDocumentationDirectory, // documentation (Documentation)
  11. NSDocumentDirectory, // documents (Documents)
  12. NSCoreServiceDirectory, // location of CoreServices directory (System/Library/CoreServices)
  13. NSAutosavedInformationDirectory API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)) = 11, // location of autosaved documents (Documents/Autosaved)
  14. NSDesktopDirectory = 12, // location of user's desktop
  15. NSCachesDirectory = 13, // location of discardable cache files (Library/Caches)
  16. NSApplicationSupportDirectory = 14, // location of application support files (plug-ins, etc) (Library/Application Support)
  17. NSDownloadsDirectory API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)) = 15, // location of the user's "Downloads" directory
  18. NSInputMethodsDirectory API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)) = 16, // input methods (Library/Input Methods)
  19. NSMoviesDirectory API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)) = 17, // location of user's Movies directory (~/Movies)
  20. NSMusicDirectory API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)) = 18, // location of user's Music directory (~/Music)
  21. NSPicturesDirectory API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)) = 19, // location of user's Pictures directory (~/Pictures)
  22. NSPrinterDescriptionDirectory API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)) = 20, // location of system's PPDs directory (Library/Printers/PPDs)
  23. NSSharedPublicDirectory API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)) = 21, // location of user's Public sharing directory (~/Public)
  24. NSPreferencePanesDirectory API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)) = 22, // location of the PreferencePanes directory for use with System Preferences (Library/PreferencePanes)
  25. NSApplicationScriptsDirectory NS_ENUM_AVAILABLE(10_8, NA) = 23, // location of the user scripts folder for the calling application (~/Library/Application Scripts/code-signing-id)
  26. NSItemReplacementDirectory API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)) = 99, // For use with NSFileManager's URLForDirectory:inDomain:appropriateForURL:create:error:
  27. NSAllApplicationsDirectory = 100, // all directories where applications can occur
  28. NSAllLibrariesDirectory = 101, // all directories where resources can occur
  29. NSTrashDirectory API_AVAILABLE(macos(10.8), ios(11.0)) API_UNAVAILABLE(watchos, tvos) = 102 // location of Trash directory
  30. };
  31. typedef NS_OPTIONS(NSUInteger, NSSearchPathDomainMask) {
  32. NSUserDomainMask = 1, // user's home directory --- place to install user's personal items (~)
  33. NSLocalDomainMask = 2, // local to the current machine --- place to install items available to everyone on this machine (/Library)
  34. NSNetworkDomainMask = 4, // publically available location in the local area network --- place to install items available on the network (/Network)
  35. NSSystemDomainMask = 8, // provided by Apple, unmodifiable (/System)
  36. NSAllDomainsMask = 0x0ffff // all domains: all of the above and future items
  37. };

获取各个目录的方法

  1. NSString *path = NSHomeDirectory();
  2. NSLog(@"沙盒目录 %@",path);
  3. // 获取沙盒主目录路径
  4. NSString *homeDir = NSHomeDirectory();
  5. NSLog(@"沙盒主目录路径是%@",homeDir);
  6. // 获取Documents目录路径
  7. NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
  8. NSLog(@"Documents目录路径是%@",docDir);
  9. // 获取Library的目录路径
  10. NSString *libDir = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
  11. NSLog(@"Library的目录路径是%@",docDir);
  12. // 获取Caches目录路径
  13. NSString *cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
  14. NSLog(@"Caches目录路径是%@",docDir);
  15. // 获取tmp目录路径
  16. NSString *tmpDir = NSTemporaryDirectory();
  17. NSLog(@"tmp目录路径是%@",docDir);

发表评论

表情:
评论列表 (有 0 条评论,449人围观)

还没有评论,来说两句吧...

相关阅读

    相关 查看iOS文件

    每一个iOS程序都一个自己的文件系统,这个文件系统叫应用程序沙盒(SanBox),它存放这代码以外的文件,其他的应用程序不能访问到该程序的沙盒, 如何在本地查看应用

    相关 iOS8路径问题

    在我们的印象中一个路径获取后,下一次再想进此路径只需原路径搜索即可。但在iOS8中,倘若再抱有此思想,我想只会碰壁。 1.在iOS8之前,我们获取到沙盒中的document、

    相关 iOS使用总结

    1沙盒机制 iPhone对于安装在上面的应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,这个区域就叫做沙盒。所有和该程序有关的文件都保存在这个独立

    相关 iOS系统的机制

    出于安全考虑, iOS将每个应用程序限制在属于自己的特定文件内,其他app没有权限访问到此文件夹, 这就是app的沙盒。 iOS的应用程序常用的文件目录:

    相关 iOS 机制

    iOS 每个 APP 都有自己的存储空间,这个存储空间叫做沙盒. APP可以在自己的沙盒中进行数据存取操作,但不能访问其他 app 的沙盒空间.对 app 做一些数据存储或者文