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

时间:2015-12-30 20:04:37

标签: ios objective-c

我试图保存下载的文件,以便我可以在另一个会话中打开它。我将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

1 个答案:

答案 0 :(得分:1)

我建议采取以下步骤:

  1. 选择最后一个路径组件(那只是你的mp3文件名)
  2. 获取当前的Documents目录
  3. 使用当前Documents目录和提取的mp3文件名
  4. 构建新路径

    如果我没记错,/var/private/var的符号链接。因此,根据路径的构建方式,最终可能会出现一个或另一个。

    我继承了一个被同一个问题所震撼的项目,只有一个额外随机命名的目录。最后,我删除了前导/private组件,构造了一个路径组件数组并检查,是否用当前值替换不存在的元素导致现有文件。你的情况应该更容易处理。

    我不记得什么时候,但在某些时候,应用程序目录(十六进制数路径组件)开始随着模拟器中的每次运行而改变。从这种行为开始,这些问题变得更加明显。虽然不应该保存完整的路径,但我怀疑很多项目在过去并不关心。一方面是因为事情起作用,另一方面因为很多人都不知道。