在 Cocoa 中,从不在应用程序包中的本地文件获取二进制数据的正确方法是啥?
Posted
技术标签:
【中文标题】在 Cocoa 中,从不在应用程序包中的本地文件获取二进制数据的正确方法是啥?【英文标题】:In Cocoa, what is the correct way to get binary data from a local file that is not in the app bundle?在 Cocoa 中,从不在应用程序包中的本地文件获取二进制数据的正确方法是什么? 【发布时间】:2021-12-31 22:27:00 【问题描述】:我的应用程序需要不在应用程序包中的本地磁盘上的音频数据。我看到的所有解决方案都涉及使用 URLSession dataTask 的实例,但是所有这些解决方案都专注于从远程服务器流式传输数据,而不是从本地磁盘获取数据。所有关于 URLSession 的文档似乎也是关于从远程服务器获取数据的。
所以我的问题很简单 - URLSession 实际上是从磁盘而不是通过网络获取二进制文件的正确方法吗?
【问题讨论】:
没那么简单。这取决于应用程序是否被沙盒化。不,URLSession
不是正确的方法。
你要使用的文件在本地磁盘的哪个位置,有没有指向它的URL?
@EmilioPelaez 好的,所以如果用户使用模式窗口(NSOpenPanel)选择文件,我现在可以工作了......文件可以在任何目录中。如果我在源代码中硬编码一个 url 路径来测试它虽然不起作用
@EmilioPelaez .... 即将路径传递给'let data = try Data(contentsOf: url)' ...返回一个错误,说没有这样的文件...不知道为什么
@chemFour 那么你需要检查 url 是否有效;如果是这样,但如果它确实指向您有权读取的文件。这就是为什么我之前回答过检查FileManager
文档的原因。
【参考方案1】:
检查FileManager
,如果您正在尝试获取数据流InputStream
。
【讨论】:
以上是关于在 Cocoa 中,从不在应用程序包中的本地文件获取二进制数据的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
在 Cocoa / Objective C 中保护 xml plist
WP8.1程序开发中,如何加载本地文件资源或安装在程序包中的资源。