2016-10-03 75 views
0

大家好,我最近轉移到了Ubuntu來開展一個項目。 我要簡單地從文件中讀取,使用:在讀取文件時獲取Java中拒絕的權限(Linux)

File root = new File(fileroot); File sourceFile = new File(root,filename);

但是當我運行的應用程序,我得到: error: error reading FilePath; FilePath (Permession denied).

(filepath是該文件所在的路徑,我已隱藏它爲了隱私目的)

我想是由於操作系統,因爲在Windows上運行相同的代碼不會給我任何錯誤。有沒有辦法解決這個問題?我的意思是直接從Java獲得這些權限的方法,或者可能使用命令從終端更改它們?

在此先感謝您的答案!

+0

您可以作爲有權打開該文件的用戶運行該程序。示例'sudo java -jar myProg.jar'。 – Titus

+0

另一件要研究的是如何創建這些文件**。您會發現,在第一次創建沒有讀取權限的文件時,沒有多少意義,迫使您稍後添加它們。所以,你可以看看你的系統上的** umask **設置;看起來相當奇怪的是,你處理的文件不是**可讀的**。所以,是的,答案可以幫助你解決**問題;但你應該首先詢問(並修正)「爲什麼到達那裏」。 – GhostCat

回答

1

就像消息所說,您可能沒有權限讀取該文件。要解決問題,您可以添加:

System.out.println(sourceFile.getAbsolutePath()); 

找到你想閱讀,然後檢查其文件系統權限的文件的確切位置:

ls -la <path to your file> 

確認您擁有r權限,否則這是你得到的錯誤。

+0

我得到:'-rw ------- 1 root root 2044 ott 3 18:00 PATHTOTHEFILE' 我想我有讀寫權限嗎? – giku93113

+0

這意味着只有用戶'root'才能讀取它。要修復它,你必須通過'chown RaggruppatoreLibriPe rAutore.java'或添加讀取權限:'chmod a + r RaggruppatoreLibriPe rAutore.java'將文件的所有權更改爲你。 –

0

執行此操作的一種方法是導航到該文件並更改權限以允許每個用戶讀取該文件。 最簡單的是通過終端:

chmod +r /path/to/file

要查看所有不同的用途按照鏈接,瞭解CHMOD。 https://codex.wordpress.org/Changing_File_Permissions

+0

我設法做了這個答案,現在錯誤消失了,但我有另一個文件。如何將權限擴展到整個文件夾? – giku93113

+0

你可以在chmod中使用遞歸參數「-R」(就像大多數linux命令一樣),你可以這樣做: 'chmod + r -R/path/to/directory /'小心你選擇正確的路徑如果你這樣做到了根目錄,你允許整個系統對每個用戶都有權限,這對於數據安全來說是非常殘酷的 –

+0

我解決了很多! – giku93113