本文介紹了無法在MacOS上打開文件-FileNotFoundException,不允許操作的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
這是一個簡單的程序:
new FileInputStream("/Users/me/Desktop/foo.png")
我正嘗試從IntelliJ運(yùn)行它,但收到:
線程異常(不允許操作)
Unix燙發(fā)是常見的rw-r--r--。這與MacOS的額外安全性有關(guān)。
現(xiàn)在如何在MacOS上打開Java程序中的文件?
這是MacOS 11.0測試版(大蘇爾)。也許它也發(fā)生在11.0之前;我不知道。
推薦答案
您遇到了MacOS特定的問題。在MacOS中,檢查經(jīng)典的POSIX權(quán)限是不夠的,因為該操作系統(tǒng)引入了許多機(jī)制來提供細(xì)粒度控制和安全性。
訪問控制列表
POSIX權(quán)限提供了三個可以控制訪問權(quán)限的分組:所有者、組和其他所有人。另一方面,ACL允許創(chuàng)建訪問控制實(shí)體,該實(shí)體可以以多種方式定義。這不是一個*NIX入門讀物,所以讓我們來看看最重要的部分。要檢查ACL,請啟動終端會話,導(dǎo)航到包含目標(biāo)文件的目錄,然后鍵入:
ls -le foo.png
您應(yīng)該會看到POSIX權(quán)限,后跟一個編號的ACL規(guī)則列表。如果您的帳戶受到這些規(guī)則之一的影響,您可以按如下方式刪除該規(guī)則:
sudo chmod -a# num foo.png
其中num是違規(guī)規(guī)則的數(shù)字標(biāo)識符。
文件標(biāo)志
文件標(biāo)志是另一種并行權(quán)限系統(tǒng)。再次使用終端,請嘗試:
ls -lO foo.png
注意:該標(biāo)志是小寫字母L后跟大寫字母O。不能將其中之一與數(shù)字1或0混淆。
您將再次看到POSIX信息,后跟描述與相關(guān)文件有關(guān)的任何標(biāo)志的字符串。您關(guān)心的標(biāo)志是uchg和schg(分別表示用戶不可變性標(biāo)志和系統(tǒng)不可變性標(biāo)志)。
您可以按如下方式刪除這些標(biāo)志:
sudo chflags nouchg foo.png
sudo chflags noschg foo.png
擴(kuò)展屬性
檢查文件的擴(kuò)展屬性,如下所示:
xattr -l $foo.png
按如下方式刪除所有擴(kuò)展屬性:
sudo xattr -c $foo.png
系統(tǒng)完整性保護(hù)
系統(tǒng)完整性保護(hù)可能已將您的文件指定為無根文件。使用以下命令在終端檢查狀態(tài):
ls -l@ foo.png
清除無根標(biāo)志會更痛苦一些。通過恢復(fù)盤啟動,打開終端,導(dǎo)航到您的文件并輸入:
sudo xattr -d com.apple.rootless foo.png
我不是系統(tǒng)管理員,但假設(shè)您已經(jīng)驗證了您的帳戶具有POSIX權(quán)限,并且文件不是簡單地通過Finder鎖定的(Command-i,查看角落的小復(fù)選框),那么其中至少有一項應(yīng)該可以解決您的問題。
這篇關(guān)于無法在MacOS上打開文件-FileNotFoundException,不允許操作的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,






