本文介紹了無法在MacOS上打開文件-FileNotFoundException,不允許操作的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
這是一個簡單的程序:
new FileInputStream("/Users/me/Desktop/foo.png")
我正嘗試從IntelliJ運行它,但收到:
線程異常(不允許操作)
Unix燙發是常見的rw-r--r--
。這與MacOS的額外安全性有關。
現在如何在MacOS上打開Java程序中的文件?
這是MacOS 11.0測試版(大蘇爾)。也許它也發生在11.0之前;我不知道。
推薦答案
您遇到了MacOS特定的問題。在MacOS中,檢查經典的POSIX權限是不夠的,因為該操作系統引入了許多機制來提供細粒度控制和安全性。
訪問控制列表
POSIX權限提供了三個可以控制訪問權限的分組:所有者、組和其他所有人。另一方面,ACL允許創建訪問控制實體,該實體可以以多種方式定義。這不是一個*NIX入門讀物,所以讓我們來看看最重要的部分。要檢查ACL,請啟動終端會話,導航到包含目標文件的目錄,然后鍵入:
ls -le foo.png
您應該會看到POSIX權限,后跟一個編號的ACL規則列表。如果您的帳戶受到這些規則之一的影響,您可以按如下方式刪除該規則:
sudo chmod -a# num foo.png
其中num
是違規規則的數字標識符。
文件標志
文件標志是另一種并行權限系統。再次使用終端,請嘗試:
ls -lO foo.png
注意:該標志是小寫字母L后跟大寫字母O。不能將其中之一與數字1或0混淆。
您將再次看到POSIX信息,后跟描述與相關文件有關的任何標志的字符串。您關心的標志是uchg
和schg
(分別表示用戶不可變性標志和系統不可變性標志)。
您可以按如下方式刪除這些標志:
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,查看角落的小復選框),那么其中至少有一項應該可以解決您的問題。
這篇關于無法在MacOS上打開文件-FileNotFoundException,不允許操作的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,