文件操作在设备上不起作用

Posted

技术标签:

【中文标题】文件操作在设备上不起作用【英文标题】:File operation not working on device 【发布时间】:2012-01-10 19:29:50 【问题描述】:

什么会使在模拟器上运行良好的文件操作无法在 ios 设备上运行

当使用[NSBundle mainBundle]时,文件被FileManager找到时,相邻文件操作产生不同结果的不同原因可能是什么?

我有时会注意到这一点,只是想知道发生这种情况时应该考虑什么。

【问题讨论】:

如果你给了你Mac中存在的路径,它将在模拟器上运行并执行操作。但在设备中,它不会。 【参考方案1】:

您似乎正在尝试读取应用程序包中的文件。你可以通过代码得到它的路径:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"fileName" ofType:@"ext"]; //然后就可以使用NSFileManager读取/复制了

应用程序包中的所有文件都是只读的。您可以从这里获得更多信息:

http://developer.apple.com/library/ios/#documentation/CoreFoundation/Conceptual/CFBundles/AccessingaBundlesContents/AccessingaBundlesContents.html#//apple_ref/doc/uid/10000123i-CH104-SW8

【讨论】:

【参考方案2】:

正如@Aadhira 在上面的评论中所说,模拟器将其文件存储在你 Mac 上的一堆文件夹中,而不是某种模拟的主包/文档目录沙箱中。

为了从您的主包中获取静态文件,您必须创建一个从 [NSBundle mainBundle] 开始的路径并在其上添加路径组件。

【讨论】:

以上是关于文件操作在设备上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

transform:翻译动画在 iOS 15.1 设备上不起作用

为啥从 https 服务器下载文件在 montavista linux 的嵌入式设备上不起作用?

WKWebView 从文档目录加载 html 在设备上不起作用

对象 FileTransfert 的上传()在某些 android 设备上不起作用

地理定位 API 在某些 Android 设备上不起作用

为啥 getExternalFilesDirs() 在某些设备上不起作用?