首页 > 解决方案 > 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)。我可以检查更多?

标签: swiftmacosfile-manager

解决方案


从沙盒应用程序中,您无法以编程方式访问任何目录中的文件。在沙盒设置中启用User Selected File : read/write访问权限后,您可以使用NSOpenPanel/NSSavePanel让您的用户选择他们想要授予访问权限的文件,但如果没有明确的用户交互,您将无法访问~/Documents您尝试访问的文件夹。


推荐阅读