gpt4 book ai didi

java - 无法在 macOS 上打开文件 - FileNotFoundException,不允许操作

转载 作者:行者123 更新时间:2023-12-04 15:16:45 25 4
gpt4 key购买 nike

这是一个简单的程序:

new FileInputStream("/Users/me/Desktop/foo.png")
我试图从 IntelliJ 运行它,我得到:

Exception in thread "main" java.io.FileNotFoundException: /Users/me/Desktop/foo.png (Operation not permitted)


unix perms 是通常的 rw-r--r-- .这与 macOS 的额外安全性有关。
现在如何在 macOS 上的 Java 程序中打开文件?
这是 macOS 11.0 测试版(大苏尔)。也许它也发生在 11.0 之前;我不知道。

最佳答案

您遇到了 MacOS 特定问题。使用 MacOS 检查经典的 POSIX 权限还不够,因为操作系统引入了许多机制来提供细粒度的控制和安全性。
访问控制列表
POSIX 权限提供了可以控制访问权限的三个分组:所有者、组和其他所有人。另一方面,ACL 允许创建可能以多种方式定义的访问控制实体。这不是 *NIX 底漆,所以让我们进入一些重要的部分。要检查 ACL,请启动终端 session ,导航到包含目标文件的目录并键入:

ls -le foo.png
您应该会看到 POSIX 权限,然后是一个编号的 ACL 规则列表。如果您的帐户受这些规则之一的影响,您可以按如下方式删除该规则:
sudo chmod -a# num foo.png
哪里 num是违规规则的数字标识符。
文件标志
文件标志是另一个并行权限系统。再次使用终端,尝试:
ls -lO foo.png
注意:标志是小写字母 L 后跟大写字母 O。不要混淆数字 1 或 0。
您将再次看到 POSIX 信息,后跟一个描述与相关文件相关的任何标志的字符串。您关心的flag是 uchgschg (分别表示用户不变性标志和系统不变性标志)。
您可以按如下方式删除这些标志:
sudo chflags nouchg foo.png
sudo chflags noschg foo.png
扩展属性
检查您的文件的扩展属性,如下所示:
xattr -l $foo.png
删除所有扩展属性,如下所示:
sudo xattr -c $foo.png
系统完整性保护
系统完整性保护可能已将您的文件指定为“无根”。使用以下命令检查终端的状态:
ls -l@ foo.png
清除无根标志有点痛苦。通过恢复磁盘启动,打开终端,导航到您的文件并键入:
sudo xattr -d com.apple.rootless foo.png
我不是系统管理员,但至少其中一项应该涵盖您的问题,假设您已验证您的帐户具有 POSIX 权限并且文件不仅仅是通过 Finder 锁定(Command-I,查找小复选框在角落)。

关于java - 无法在 macOS 上打开文件 - FileNotFoundException,不允许操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64179397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com