我试图保存下载的文件,以便我可以在另一个会话中打开它。我将mp3数据保存到文档目录中,并且我将url保存到本地数据存储区中的文件中。当我使用
检查时 if ([[NSFileManager defaultManager] fileExistsAtPath:musicObject[@"localFile"]]){
NSLog(@"applicationDocumentsDir exists");
}
else {
NSLog(@"File doesn't exist");
}
它返回"文件不存在",但我知道它确实存在,因为我打印了文件目录给了我
"文件:///的私有 /var/mobile/Containers/Data/Application/94552DFC-022B-4962-9CB7-CCD87CB43E57/Documents/xDDsCbXAFhwEqGIzJfJRByEr1.mp3" ;,
我尝试使用相同的路径访问它,但第一个是私有。如何使文件不是私密的(我之前在应用程序中保存了它)
文件:///的 VAR /mobile/Containers/Data/Application/AE27BD8F-5EEB-48FC-A8D4-E228F99CECE3/Documents/xDDsCbXAFhwEqGIzJfJRByEr1.mp3
答案 0 :(得分:1)
我建议采取以下步骤:
Documents
目录Documents
目录和提取的mp3文件名如果我没记错,/var
是/private/var
的符号链接。因此,根据路径的构建方式,最终可能会出现一个或另一个。
我继承了一个被同一个问题所震撼的项目,只有一个额外随机命名的目录。最后,我删除了前导/private
组件,构造了一个路径组件数组并检查,是否用当前值替换不存在的元素导致现有文件。你的情况应该更容易处理。
我不记得什么时候,但在某些时候,应用程序目录(十六进制数路径组件)开始随着模拟器中的每次运行而改变。从这种行为开始,这些问题变得更加明显。虽然不应该保存完整的路径,但我怀疑很多项目在过去并不关心。一方面是因为事情起作用,另一方面因为很多人都不知道。