1、打开已经安装上的QQ电脑管家(Mac版本)。
2. 为什么ios中的沙盒路径找不到文件
1、模拟器沙盒目录
文件都在个人用户名文件夹下的一个隐藏文件夹里,中文叫资源库,他的目录其实是Library。
因为应用是在沙箱(sandbox)中的,在文件读写权限上受到限制,只能在几个目录下读写文件:
Documents:应用中用户数据可以放在这里,iTunes备份和恢复的时候会包括此目录
tmp:存放临时文件,iTunes不会备份和恢复此目录,此目录下文件可能会在应用退出后删除
Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除
iTunes在与iPhone同步时,备份所有的Documents和Library文件。
iPhone在重启时,会丢弃所有的tmp文件。
查看方法:
方法1、可以设置显示隐藏文件,然后在Finder下直接打开。设置查看隐藏文件的方法如下:打开终端,输入命名
(1)显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true
(2)隐藏Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false
(3)输完单击Enter键,退出终端,重新启动Finder就可以了 重启Finder:鼠标单击窗口左上角的苹果标志-->强制退出-->Finder-->
现在能看到资源库文件夹了。
打开资源库后找到/Application Support/iPhone Simulator/文件夹。这里面就是模拟器的各个程序的沙盒目录了。
方法2、这种方法更方便,在Finder上点->前往->前往文件夹,输入/Users/username/Library/Application Support/iPhone Simulator/ 前往。
username这里写用户名。
代码查看目录:
NSString *path = NSHomeDirectory();//主目录
NSLog(@"NSHomeDirectory:%@",path);
NSString *userName = NSUserName();//与上面相同
NSString *rootPath = NSHomeDirectoryForUser(userName);
NSLog(@"NSHomeDirectoryForUser:%@",rootPath);
NSArray *paths = (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory=[paths objectAtIndex:0];//Documents目录
NSLog(@"NSDocumentDirectory:%@",documentsDirectory);
结果如下:
2013-09-03 20:31:27.210 ios那啥[8383:c07] NSHomeDirectory:/Users/wmm/Library/Application Support/iPhone Simulator/6.1/Applications/D803DBD2-9CB2-4D18-9152-6E9398EFF5DB2013-09-03 20:31:27.210 ios那啥[8383:c07] NSHomeDirectoryForUser:/Users/wmm/Library/Application Support/iPhone Simulator/6.1/Applications/D803DBD2-9CB2-4D18-9152-6E9398EFF5DB2013-09-03 20:31:27.211 ios那啥[8383:c07] NSDocumentDirectory:/Users/wmm/Library/Application Support/iPhone Simulator/6.1/Applications/D803DBD2-9CB2-4D18-9152-6E9398EFF5DB/Documents 自定义类返回各目录路径:
#import <Foundation/Foundation.h>
@interface ICSandboxHelper : NSObject
+ (NSString *)homePath; // 程序主目录,可见子目录(3个):Documents、Library、tmp
+ (NSString *)appPath; // 程序目录,不能存任何东西
+ (NSString *)docPath; // 文档目录,需要ITUNES同步备份的数据存这里,可存放用户数据
+ (NSString *)libPrefPath; // 配置目录,配置文件存这里
+ (NSString *)libCachePath; // 缓存目录,系统永远不会删除这里的文件,ITUNES会删除
+ (NSString *)tmpPath; // 临时缓存目录,APP退出后,系统可能会删除这里的内容
+ (BOOL)hasLive:(NSString *)path; //判断目录是否存在,不存在则创建
#import "ICSandboxHelper.h"
@implementation ICSandboxHelper
+ (NSString *)homePath{
return NSHomeDirectory();
}
+ (NSString *)appPath
{
NSArray * paths = (NSApplicationDirectory, NSUserDomainMask, YES);
return [paths objectAtIndex:0];
}
+ (NSString *)docPath
{
NSArray * paths = (NSDocumentDirectory, NSUserDomainMask, YES);
return [paths objectAtIndex:0];
}
+ (NSString *)libPrefPath
{
NSArray * paths = (NSLibraryDirectory, NSUserDomainMask, YES);
return [[paths objectAtIndex:0] stringByAppendingFormat:@"/Preference"];
}
+ (NSString *)libCachePath
{
NSArray * paths = (NSLibraryDirectory, NSUserDomainMask, YES);
return [[paths objectAtIndex:0] stringByAppendingFormat:@"/Caches"];
}
+ (NSString *)tmpPath
{return [NSHomeDirectory() stringByAppendingFormat:@"/tmp"];
}
+ (BOOL)hasLive:(NSString *)path
{
if ( NO == [[NSFileManager defaultManager] fileExistsAtPath:path] )
{
return [[NSFileManager defaultManager] createDirectoryAtPath:path
withIntermediateDirectories:YES
attributes:nil
error:NULL];
}
return NO;
}
3. 苹果手机删除软件会有残留吗
不会。
首先得了解下iOS 沙盒机制:
出于安全考虑,iPhone对于安装在手机上面的应用程序有所限制,这个限制就是应用程序只能在程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒。
所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等。总体来说沙盒就是一种独立、安全、封闭的空间。
沙盒机制的特点:
1、每个应用程序都有自己的存储空间;
2、每个应用程序都不可以翻过自己的围墙去访问别的存储空间的内容(越狱后设备除外);
3、在访问别人沙盒内的数据时需要访问权限。
沙盒模拟图如下:
(3)苹果隐藏tmp文件扩展阅读
沙盒(sandbox)的核心内容是:sandbox对应用程序执行各种操作的权限,限制获取系统目录下的文件路径。
应用程序沙盒目录下有三个文件夹Documents、Library(下面有Caches和Preferences目录)、tmp。
1、Documents:保存应用运行时生成的需要持久化的数据iTunes会自动备份该目录。苹果建议将在应用程序中浏览到的文件数据保存在该目录下;
2、Library/Caches:一般存储的是缓存文件,例如图片视频等,此目录下的文件不会再应用程序退出时删除,在手机备份的时候,iTunes不会备份该目录;
3、Library/Preferences:保存应用程序的所有偏好设置iOS的Settings(设置),我们不应该直接在这里创建文件,而是需要通过NSUserDefault这个类来访问应用程序的偏好设置。iTunes会自动备份该文件目录下的内容;
4、tmp:临时文件目录,在程序重新运行的时候,和开机的时候,会清空tmp文件夹。
卸载后没有残留,所以也不用清理,也就不存在清理机制。
iOS 中 app 对本地存储只能访问到自己的根目录,再往上就没有权限了。访问照片通讯录等需要经过用户同意,也只限写入特定格式的文件,所以如果有手动保存的照片或通讯录等从系统对应程序删除即可,不会存在隐藏的文件。
卸载 app 时根目录会被直接删除,而且根目录里的所有文件绝对都会被删除,不会有什么只读的。 Safari 中正常也是跳转到 App Store 安装,但通过企业开发者账号安装的也是一样直接删除 app 根目录。