swift - fileManger 返回错误我无权查看包中的文件
问题描述
我试图从目录中获取文件名。现在我有两种方法可以访问该位置:一种是通过打开面板,我可以通过从“打开包内容”查找器窗口打开的文件拖动文件来设置目录,手动选择所有文件(结束执行)。其次——通过迭代 URL。第二种方法不起作用,因为:
The file “glyphs” couldn’t be opened because you don’t have permission to view it
我可以从 Finder 中查看它,通过 Open Panel 从同一个应用程序访问...嗯。我创建这样的 URL:
print ("filename <\(filename)>, \(isDirectory ? "Directory" : "File")")
let urlf = url.appendingPathComponent(filename, isDirectory: isDirectory)
print( "\(urlf.isFileURL ? "this is a file" : "not a file:") \(urlf)" )
此代码的输出是:
filename <glyphs>, Directory
this is a file: file:///Users/lukasz/Documents/ClanTestDesignSpace/masters/ClnNew-BlackUltraExpandedHigh.ufo/glyphs/
URL 没问题,我在 finder 中创建了“将字形复制为路径名”并比较了两者:除了最后一个斜杠之外,它们完全相同。但它不再是 Directory 了this is a file
。
无论如何,我将此 URL 发送到:
let fileURLs = try fileManager.contentsOfDirectory(at: urlf, includingPropertiesForKeys: nil)
总是返回错误。我试图改变includingPropertiesForKeys: [URLResourceKey.nameKey]
机器人没有效果。
我检查了沙箱 ( User Selected File : read/write
)。我可以检查更多?
解决方案
从沙盒应用程序中,您无法以编程方式访问任何目录中的文件。在沙盒设置中启用User Selected File : read/write
访问权限后,您可以使用NSOpenPanel
/NSSavePanel
让您的用户选择他们想要授予访问权限的文件,但如果没有明确的用户交互,您将无法访问~/Documents
您尝试访问的文件夹。
推荐阅读
- laravel - 无法调用组件方法。在组件上找不到公共方法 [storeLike]:
- php - laravel rest api 有时会抛出 socket hang up 或 ECONNRESET 错误
- date-fns - MM 和 mm 有什么区别,为什么没有 DD 而不是 dd 用于 date-fns
- mysql - 如果另一个表中存在值,如何插入到表中
- ios - 主线程在swift 5中冻结后台线程操作
- python - 如何在 QML 文件中使用 QRC 文件?
- laravel - 关闭 WSL2 后 Laravel Valet 无法正常工作
- powershell - 获取名称存储在变量中的环境变量的值
- excel-formula - 我可以计算几何角度数值吗
- python - 从匹配模式中读取文件并匹配上面或下面的行