无法从文档目录中读取保存的文件

我试图保存一个下载的文件,所以我可以在另一个会话中打开它。 我正在将mp3数据保存到文档目录,并将url保存到本地数据存储中的文件中。 当我检查使用

if ([[NSFileManager defaultManager] fileExistsAtPath:musicObject[@"localFile"]]){ NSLog(@"applicationDocumentsDir exists"); } else { NSLog(@"File doesn't exist"); } 

它返回“文件不存在”,但我知道这是因为我已经打印出给我的文档目录

“file:/// private /var/mobile/Containers/Data/Application/94552DFC-022B-4962-9CB7-CCD87CB43E57/Documents/xDDsCbXAFhwEqGIzJfJRByEr1.mp3”,

我试图用相同的path访问它,但第一个是私有的 。 如何使文件不是私有的(我已经在应用程序中保存了它)

file:/// var /mobile/Containers/Data/Application/AE27BD8F-5EEB-48FC-A8D4-E228F99CECE3/Documents/xDDsCbXAFhwEqGIzJfJRByEr1.mp3

我build议以下步骤:

  1. 拿最后的path组件(这只是你的mp3文件名)
  2. 获取当前的Documents目录
  3. 用当前的Documents目录和提取的mp3文件名build立一个新的path

如果我没有记错, /var/private/var的符号链接。 所以,根据path的build立方式,最终可能会有一个或另一个。

我inheritance了一个同样的问题,只有一个额外的随机命名目录之间的项目。 最后,我删除了前导/private组件,构build了一个path组件数组,并检查是否用当前值replace不存在的元素导致现有的文件。 你的情况应该更容易处理。

我不记得什么时候,但在某个时候,应用程序目录(hex数字path组件)几乎在模拟器中每次运行都开始改变。 从这种行为开始,这些问题变得更加明显。 尽pipe不应该保存完整的道路,但我怀疑过去很多项目并不在意。 一方面是因为事情刚刚起作用,另一方面是因为很多人根本不知道。